public static void PlayMusic(AudioMusicData musicData) { CurrentMusic = new AudioMusicData { MusicName = musicData.MusicName, ABName = musicData.ABName, Loop = musicData.Loop, Volume = musicData.Volume }; var self = Instance; if (!IsMusicOn && musicData.AllowMusicOff) { musicData.OnMusicBegin.InvokeGracefully(); musicData.OnMusicEnd.InvokeGracefully(); return; } PTDebug.Log(">>>>>> Start Play Music"); // TODO: 需要按照这个顺序去 之后查一下原因 //需要先注册事件,然后再play self.mMainUnit.SetOnStartListener(musicUnit => { musicData.OnMusicBegin.InvokeGracefully(); //调用完就置为null,否则应用层每注册一个而没有注销,都会调用 self.mMainUnit.SetOnStartListener(null); }); self.mMainUnit.SetAudio(self.gameObject, musicData.MusicName, musicData.ABName, loop: musicData.Loop, volume: musicData.Volume); self.mMainUnit.SetOnFinishListener(musicUnit => { musicData.OnMusicEnd.InvokeGracefully(); //调用完就置为null,否则应用层每注册一个而没有注销,都会调用 self.mMainUnit.SetOnFinishListener(null); }); }
/// <summary> /// 停止播放音乐 /// </summary> public static void StopMusic() { CurrentMusic = null; Instance.mMainUnit.Stop(); }