1.思路:
游戏中的声音主要分为两种:一种是背景音乐,一种是音效(频繁切换)
对于两种声音这样进行管理:
背景音乐:由一个空物体上的一个AudioSource进行控制,我们只需对它进行暂停、停止、开始等操作。
音效:在游戏中,音效往往需要频繁切换,我们也用一个空物体进行控制,只不过不只用一个AudioSource,而是动态的进行增加和减少AudioSource组件,当有音效需要播放时,在空物体上增加一个AudioSource组件播放,停止时或者播放完则移除该组件,下一次播放也一样。
2.代码
public class MusicManager : SingeCaseBase<MusicManager>
{
//BGM部分
AudioSource BgmAudio = null;
float BgmVolume = 1;
//Sound音效部分
GameObject SoundAudioHolder = null;
List<AudioSource> SoundAudios=null;
float SoundVolume = 1;
public MusicManager()
{
//实时监测有无播放完的音效,进行销毁
MonoManager.GetInstance().AddUpdateAction(CheckSound);
}
//BGM部分
public void StartBgm(string BgmName)
{
//创建一个空物体挂载Bgm的AudioSource
if(BgmAudio == null)
{
GameObject bgmHolder = new GameObject("bgmHolder");
BgmAudio = bgmHolder.