使用 mixer 混音器模块实现游戏音效控制
关注 1800
如何在 Pygame 中加载、播放、暂停、停止音效视频演示 YouTube如何在 Pygame 中加载、播放、暂停、停止音效视频演示 Bilibili
引言
在游戏开发中,音效是提升玩家沉浸感的重要元素。Python Pygame 包提供了mixer混音器模块,用于处理游戏中的音频效果。本文将介绍如何使用mixer模块加载和控制游戏音效。
初始化 mixer 模块
在使用mixer模块前,需要先进行初始化,如果已经调用了pygame的init函数,则可以省略对mixer的显式初始化。
import pygame
pygame.mixer.init()加载音效文件
Pygame 区分音效和背景音乐的处理方式,对于较小的音效文件,我们可以使用Sound类。如果音效被频繁播放,可将相关的Sound对象长期保留。
jump14 = pygame.mixer.Sound("Jump14.wav")
hurt2 = pygame.mixer.Sound("Hit_Hurt2.wav")播放控制
Sound对象的play方法,可用于播放音效,该方式是异步的,调用后会立即返回,不会阻塞程序执行。
play(loops=0, maxtime=0, fade_ms=0)
- loops 参数
用于控制播放次数,默认值默认
0表示播放1次,设置为-1表示无限循环播放。- maxtime 参数
表示最大播放时长,以毫秒为单位。
jump14.play() # 播放跳跃音效
hurt2.play() # 播放受伤音效
# …
jump14.play(loops=-1) # 无限循环
hurt2.play(loops=2) # 播放3次
# …
jump14.play(loops=-1, maxtime=2000) # 最多播放2秒Sound对象的stop方法,可用于停止播放音效。
stop()
jump14.stop() # 停止音效音量控制
Sound对象的get_volume和set_volume方法,可用于获取和设置音效的音量,音量是取值范围在0到1之间的浮点数。
get_volume()
set_volume(value)
current_volume = jump14.get_volume() # 获取当前音量
jump14.set_volume(0.5) # 设置音量为 50%全局音效控制
mixer模块提供一些全局控制函数,用于对多个音效进行控制,其中pause方法可暂停所有播放中的音效,unpause方法可恢复播放所有暂停的音效,stop方法可停止所有播放中的音效。
pause()
unpause()
stop()
下面的函数toggle_pause可用于切换音频的播放和暂停状态。
paused = False
def toggle_pause():
global paused
paused = not paused
if paused:
pygame.mixer.pause()
else:
pygame.mixer.unpause()内容分类
获取源码
本部分所使用的源码,可在 GitHub 上浏览,地址如下:
https://github.com/codebeatme/pygame/tree/master/src/zh/mixer
讲解视频
如何在 Pygame 中加载、播放、暂停、停止音效·YouTube如何在 Pygame 中加载、播放、暂停、停止音效·Bilibili