Example #1
0
        protected override void ProcessMsg(int key, QMsg msg)
        {
            switch (msg.msgId)
            {
            case (ushort)AudioEvent.SoundSwitch:
                AudioMsgWithBool soundSwitchMsg = msg as AudioMsgWithBool;
                mSoundOn = soundSwitchMsg.on;
                break;

            case (ushort)AudioEvent.MusicSwitch:
                AudioMsgWithBool musicSwitchMsg = msg as AudioMsgWithBool;
                mMusicOn = musicSwitchMsg.on;
                if (!mMusicOn)
                {
                    StopMusic();
                }
                break;

            case (ushort)AudioEvent.PlayMusic:
                Debug.LogFormat("play music msg: {0}, is musicOn: ", AudioEvent.PlayMusic.ToString(), mMusicOn);
                PlayMusic(msg as AudioMsgPlayMusic);
                break;

            case (ushort)AudioEvent.StopMusic:
                StopMusic();
                break;

            case (ushort)AudioEvent.PlaySound:
                AudioMsgPlaySound audioMsgPlaySound = msg as AudioMsgPlaySound;
                PlaySound(audioMsgPlaySound);
                break;

            case (ushort)AudioEvent.PlayVoice:
                PlayVoice(msg as AudioMsgPlayVoice);
                break;

            case (ushort)AudioEvent.StopVoice:
                StopVoice();
                break;

            case (ushort)AudioEvent.PlayNode:
                ICoroutineCmdNode msgPlayNode = (msg as AudioMsgWithNode).Node;

                StartCoroutine(msgPlayNode.Execute());
                break;
            }
        }
Example #2
0
        /// <summary>
        /// 播放音效
        /// </summary>
        void PlaySound(AudioMsgPlaySound msg)
        {
            AudioUnit unit = ObjectPool <AudioUnit> .Instance.Allocate();

            unit.SetOnStartListener(delegate(AudioUnit soundUnit)
            {
                if (null != msg.onSoundBeganCallback)
                {
                    msg.onSoundBeganCallback();
                }
                unit.SetOnStartListener(null);
            });

            unit.SetAudio(gameObject, msg.soundName, false);

            unit.SetOnFinishListener(delegate(AudioUnit soundUnit)
            {
                if (null != msg.onSoundEndedCallback)
                {
                    msg.onSoundEndedCallback();
                }
                unit.SetOnFinishListener(null);
            });
        }