URLhttps://learnscript.net/zh/pygame/mixer/
    复制链接转到说明  示例

    使用 mixer 混音器模块实现游戏音效控制

    我被代码海扁署名-非商业-禁演绎
    阅读 2:58·字数 891·发布 

    引言

    在游戏开发中,音效是提升玩家沉浸感的重要元素。Python Pygame 包提供了mixer混音器模块,用于处理游戏中的音频效果。本文将介绍如何使用mixer模块加载和控制游戏音效。

    初始化 mixer 模块

    在使用mixer模块前,需要先进行初始化,如果已经调用了pygameinit函数,则可以省略对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_volumeset_volume方法,可用于获取和设置音效的音量,音量是取值范围在01之间的浮点数。

    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