来源摘要:Unity 音频管理器

摘要

CloverJoyi 分享的小型 Unity 音频管理解决方案,适用于快速原型开发与小型 2D 游戏项目。核心能力:单例全局音频控制、ScriptableObject 配置分离(音频类型枚举 + AudioClip 数组 + 音量倍率)、简易 AudioSource 对象池、播放频率限制(防音效重叠鬼畜)、全局音量与类型音量倍率的双层控制。不提供空间音频、Audio Mixer 等功能,大型 3D 游戏场景乏力。

要点

  • 架构:PersistentMonoSingleton 单例 + SoundsConfig(ScriptableObject)配置 + Timer 计时器。
  • 配置:Sounds 枚举定义音频类型;SoundEntry 包装 AudioClip[] 与 volumeMultiplier;SO 用 List 存储(字典不可序列化),访问器懒转换字典并缓存。
  • 对象池:复用空闲 AudioSource,无空闲则新建(只创建不清理、无上限,素材提示引入更成熟对象池)。
  • 播放接口:PlayRequest(带频率限制,2 秒内同类型只播一次)、PlayRequestImmediate(强制播放)、PlayRequestBreakOff(打断同类重播,适合点击音效)、PlayLoopRequest/StopLoopRequset(循环)。
  • 音量控制:全局音量 soundsVolume × 类型音量倍率 volumeMultiplier,变更事件统一更新所有音源。
  • 频率限制:m_retentionTimers 记录播放计时,Update() 中推进,超时移出。
  • 局限:无空间音频/音效/动态优先级/AudioMixer;音源同一根对象,适合 2D。
  • 扩展计划:事件驱动播放(监听事件自动播放对应音频,降低耦合)。

关联概念/实体

来源