第15讲 | 如何载入背景音乐和音效?
蔡能
该思维导图由 AI 生成,仅供参考
好的音乐总是伴随着游戏一起,一直被玩家所记忆。在游戏中播放音乐和音效并不是什么困难的事情,但是究竟什么时候播放什么音效,具体怎么实现,这恐怕就需要一些技巧了。比如,我今天要讲的,我们可以和某些函数捆绑在一起实现。
Pygame 支持 mp3、ogg、wav 音频和音效的播放。音乐的模块都在 pygame.mixer 中,这里面包括音乐和音效。
我们在使用音频部分模块的时候,需要先初始化一次。
这个初始化应该在 pygame.init() 的初始化之后。
我们来看一下具体的函数,这些函数,存在在 pygame.mixer.Sound 模块下。
我们再来看一下 Pygame.mixer.music 音乐模块。我们可以尝试一下载入音频并且播放。
我来解释一下这段代码。
刚开始,我们载入了一个名叫 bgm 的 mp3 文件,告诉程序需要载入这个文件,然后调整音量到 0.5,随后就是 play,也就是播放,播放是在程序的后台播放,然后程序会接着跑到下面的代码行。
随后,我们使用 Sound 模块,Sound 模块初始化会载入 a.wav,然后返回一个对象,这个对象设置音量为 0.5,随后再初始化一次,载入 b.wav,然后设置音量为 0.5。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在游戏中载入背景音乐和音效,以及使用Pygame和BASS音频库实现音频播放的方法。在Pygame中,音乐和音效的播放都在pygame.mixer模块中,可以使用music模块载入音乐,使用Sound模块载入音效。文章还介绍了BASS音频库的使用方法,包括初始化、建立流、播放、调整音量和获取播放状态等功能。此外,文章指出在Pygame中播放音乐不需要多线程控制,而BASS音频库则需要编写多线程的代码来实现后台播放和多个频道播放等功能。总的来说,本文通过具体的代码示例和技术细节,详细介绍了在游戏开发中如何实现音频和音效的播放,以及介绍了BASS音频库的特点和使用方法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学游戏开发》,新⼈⾸单¥59
《从 0 开始学游戏开发》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 换你睡床右边补一个坑吧,可能我和作者用的版本不太一样,有时候代码会有一些差异才能在我这边运行,在pygame.mixer.load可以加载包括mp3在内的音频,而pygame.mixer.Sound却不能加载mp3。小白填坑中🤔
作者回复: 不能加载有很多原因,可以说得更明白点看看代码
2018-07-16 - 三硝基甲苯pygame.mixer.init() songs = ["sugar-1.mp3","sugar-2.mp3","sugar-3.mp3"] current = 0 while True: if not (pygame.mixer.music.get_busy()): pygame.mixer.music.load(songs[current]) pygame.mixer.music.set_volume(0.5) pygame.mixer.music.play() current = current + 1 if current > len(songs) - 1: current = 0 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() 看了一眼doc。试了一下 感觉这样应该没啥问题了。只是感觉写在循环里。 如果以后游戏做大了会出事情吧。
作者回复: 真的大型游戏也不会真的拿来做代码测试用
2018-07-08 - 艾尔欧唯伊为什么pygame 必须要开启窗口才能播放音乐,去掉pygame.display.set_mode()就没有声音。另外死循环是因为防止程序自己关闭么?2018-10-06
- wusiration当音乐播放完成时,调用pygame.mixer.music.set_endevent()函数,发送一个事件标志。同时,在循环中,当监听到播放结束的事件标志后,开始加载另外一首歌并播放。 pygame.mixer.music.load("a.mp3") pygame.mixer.music.set_endevent(pygame.USEREVENT) pygame.mixer.music.play() while True: for event in pygame.event.get(): if event.type == pygame.USEREVENT: pygame.mixer.music.load("b.mp3") pygame.mixer.music.play() pygame文档中说pygame.mixer.music.queue()也可以实现该要求,但是在使用中根本没起作用。2018-07-07
- zhu见见有源代码地址吗2018-07-05
收起评论