使用 mixer 混音器模块实现游戏音效控制
关注 1260
如何在 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