从0开始学游戏开发
蔡能
原网易游戏引擎架构师,资深游戏底层技术专家
立即订阅
5825 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 跟我学,你也可以开发一款游戏!
免费
第一章:游戏开发基础知识 (5讲)
第1讲 | 游戏开发需要了解哪些背景知识?
第2讲 | 2D游戏和3D游戏有什么区别?
第3讲 | 游戏的发动机:游戏引擎
第4讲 | 底层绘图接口的妙用
第5讲 | 构建游戏场景的武器:地图编辑器
第二章:客户端开发 (10讲)
第6讲 | 从0开始整理开发流程
第7讲 | 如何建立一个Windows窗体?
第8讲 | 如何区分图形和图像?
第9讲 | 如何绘制游戏背景?
第11讲 | 如何载入“飞机”和“敌人”?
第12讲 | 如何设置图像的前后遮挡?
第14讲 | 如何设置精灵的变形、放大和缩小?
第15讲 | 如何设置淡入淡出和碰撞检测?
第17讲 | 如何制作游戏资源包和保存机制?
第18讲 | 如何载入背景音乐和音效?
第三章:UI和键盘鼠标 (3讲)
第20讲 | 如何在游戏中载入UI和菜单?
第21讲 | 如何用鼠标和键盘来操作游戏?
第23讲 | 如何判断客户端的网络连接?
第四章:脚本语言 (3讲)
第24讲 | 如何嵌入脚本语言?
第26讲 | 脚本语言在游戏开发中有哪些应用?
第27讲 | 如何使用脚本语言编写周边工具?
第五章:服务器端开发 (6讲)
第29讲 | 如何选择合适的开发语言?
第30讲 | 如何定制合适的开发协议?
第32讲 | 不可忽视的多线程及并发问题
第33讲 | 如何判断心跳包是否离线?
第35讲 | 如何用网关服务器进行负载均衡?
第36讲 | 如何制作游戏内容保存和缓存处理?
第六章:热点剖析 (9讲)
第10讲 | 热点剖析(一):HTML5技术是如何取代Flash的?
第13讲 | 热点剖析(二):如何选择一款HTML5引擎?
第16讲 | 热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
第19讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?
第22讲 | 热点剖析(五):如何选择移动端的游戏引擎?
第25讲 | 热点剖析(六):AR和人工智能在游戏领域有哪些应用?
第28讲 | 热点剖析(七):谈谈微信小游戏的成功点
第31讲 | 热点剖析(八):谈谈移动游戏的未来发展
第34讲 | 热点剖析(九):谈谈独立开发者的未来发展
加餐 (3讲)
复习课 | 带你梳理客户端开发的三个重点
课后阅读 | 游戏开发工程师学习路径(上)
课后阅读 | 游戏开发工程师学习路径(下)
结束语 (1讲)
结束语 | 做游戏的过程就像是在雕琢一件艺术品
从0开始学游戏开发
登录|注册

第18讲 | 如何载入背景音乐和音效?

蔡能 2018-07-05
好的音乐总是伴随着游戏一起,一直被玩家所记忆。在游戏中播放音乐和音效并不是什么困难的事情,但是究竟什么时候播放什么音效,具体怎么实现,这恐怕就需要一些技巧了。比如,我今天要讲的,我们可以和某些函数捆绑在一起实现。
Pygame 支持 mp3、ogg、wav 音频和音效的播放。音乐的模块都在 pygame.mixer 中,这里面包括音乐和音效。
我们在使用音频部分模块的时候,需要先初始化一次。
pygame.mixer.init()
这个初始化应该在 pygame.init() 的初始化之后。
我们来看一下具体的函数,这些函数,存在在 pygame.mixer.Sound 模块下。
我们再来看一下 Pygame.mixer.music 音乐模块。我们可以尝试一下载入音频并且播放。
pygame.mixer.music.load('bgm.mp3')
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play()
s1 = pygame.mixer.Sound('a.wav')
s1.set_volume(0.5)
s2 = pygame.mixer.Sound('b.wav')
s2.set_volume(0.5)
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学游戏开发》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(5)

  • 艾尔欧唯伊
    为什么pygame 必须要开启窗口才能播放音乐,去掉pygame.display.set_mode()就没有声音。另外死循环是因为防止程序自己关闭么?
    2018-10-06
  • 换你睡床右边
    补一个坑吧,可能我和作者用的版本不太一样,有时候代码会有一些差异才能在我这边运行,在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
  • 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
收起评论
5
返回
顶部