Exemplo n.º 1
0
        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);
            });
        }
Exemplo n.º 2
0
 /// <summary>
 /// 停止播放音乐
 /// </summary>
 public static void StopMusic()
 {
     CurrentMusic = null;
     Instance.mMainUnit.Stop();
 }