예제 #1
0
        private void LoadSoundSuccessCallback(string soundAssetName, object soundAsset, float duration, object userData)
        {
            LoadSoundInfo loadSoundInfo = (LoadSoundInfo)userData;

            if (loadSoundInfo == null)
            {
                Debug.LogError("加载声音的信息为空");
                return;
            }

            m_SoundsBeingLoaded.Remove(loadSoundInfo.SerialId);

            //释放需要在加载后立即释放的声音
            if (m_SoundsToReleaseOnLoad.Contains(loadSoundInfo.SerialId))
            {
                Debug.Log("在加载成功后释放了声音:" + loadSoundInfo.SerialId.ToString());
                m_SoundsToReleaseOnLoad.Remove(loadSoundInfo.SerialId);
                m_SoundHelper.ReleaseSoundAsset(soundAsset);
                return;
            }

            //播放声音
            PlaySoundErrorCode?errorCode  = null;
            SoundAgent         soundAgent = loadSoundInfo.SoundGroup.PlaySound(loadSoundInfo.SerialId, soundAsset, loadSoundInfo.PlaySoundParams, out errorCode);

            if (soundAgent != null)
            {
                //获取到声音代理辅助器,并设置绑定的实体或位置
                PlaySoundInfo        playSoundInfo    = (PlaySoundInfo)loadSoundInfo.UserData;
                SoundAgentHelperBase soundAgentHelper = soundAgent.Helper;
                if (playSoundInfo.BindingEntity != null)
                {
                    soundAgentHelper.SetBindingEntity(playSoundInfo.BindingEntity);
                }
                else
                {
                    soundAgentHelper.SetWorldPosition(playSoundInfo.WorldPosition);
                }

                //派发播放声音成功事件
                PlaySoundSuccessEventArgs se = ReferencePool.Acquire <PlaySoundSuccessEventArgs>();
                m_EventManager.Fire(this, se.Fill(loadSoundInfo.UserData, loadSoundInfo.SerialId, soundAssetName, soundAgent, duration));
            }
            else
            {
                m_SoundsToReleaseOnLoad.Remove(loadSoundInfo.SerialId);
                m_SoundHelper.ReleaseSoundAsset(soundAsset);
                string errorMessage = string.Format("声音组: {0} 播放声音 '{1}' 失败.", loadSoundInfo.SoundGroup.Name, soundAssetName);

                //派发播放声音失败事件
                PlaySoundFailureEventArgs fe = ReferencePool.Acquire <PlaySoundFailureEventArgs>();
                m_EventManager.Fire(this, fe.Fill(loadSoundInfo.UserData, loadSoundInfo.SerialId, soundAssetName, loadSoundInfo.SoundGroup.Name, loadSoundInfo.PlaySoundParams, errorCode.Value, errorMessage));
                Debug.LogError("播放声音失败:" + errorMessage);
            }
        }
예제 #2
0
        private void LoadSoundDependencyAssetCallback(string soundAssetName, string dependencyAssetName, int loadedCount, int totalCount, object userData)
        {
            LoadSoundInfo loadSoundInfo = (LoadSoundInfo)userData;

            if (loadSoundInfo == null)
            {
                Debug.LogError("加载声音的信息为空");
                return;
            }

            //派发加载声音时加载依赖资源事件
            PlaySoundDependencyAssetEventArgs e = ReferencePool.Acquire <PlaySoundDependencyAssetEventArgs>();

            m_EventManager.Fire(this, e.Fill(loadSoundInfo.UserData, loadSoundInfo.SerialId, soundAssetName, loadSoundInfo.SoundGroup.Name, loadSoundInfo.PlaySoundParams, dependencyAssetName, loadedCount, totalCount));
        }
예제 #3
0
        private void LoadSoundUpdateCallback(string soundAssetName, float progress, object userData)
        {
            LoadSoundInfo loadSoundInfo = (LoadSoundInfo)userData;

            if (loadSoundInfo == null)
            {
                Debug.LogError("加载声音的信息为空");
                return;
            }

            //派发加载声音更新事件
            PlaySoundUpdateEventArgs e = ReferencePool.Acquire <PlaySoundUpdateEventArgs>();

            m_EventManager.Fire(this, e.Fill(loadSoundInfo.UserData, loadSoundInfo.SerialId, soundAssetName, loadSoundInfo.SoundGroup.Name, loadSoundInfo.PlaySoundParams, progress));
        }
예제 #4
0
        private void LoadSoundFailureCallback(string soundAssetName, LoadResourceStatus status, string errorMessage, object userData)
        {
            LoadSoundInfo loadSoundInfo = (LoadSoundInfo)userData;

            if (loadSoundInfo == null)
            {
                Debug.LogError("加载声音的信息为空");
                return;
            }
            m_SoundsBeingLoaded.Remove(loadSoundInfo.SerialId);
            m_SoundsToReleaseOnLoad.Remove(loadSoundInfo.SerialId);

            string appendErrorMessage = string.Format("加载声音失败,资源名: {0}, 状态: {1}, 错误信息:{2}", soundAssetName, status.ToString(), errorMessage);

            //派发播放声音失败事件
            PlaySoundFailureEventArgs e = ReferencePool.Acquire <PlaySoundFailureEventArgs>();

            m_EventManager.Fire(this, e.Fill(loadSoundInfo.UserData, loadSoundInfo.SerialId, soundAssetName, loadSoundInfo.SoundGroup.Name, loadSoundInfo.PlaySoundParams, PlaySoundErrorCode.LoadAssetFailure, appendErrorMessage));
        }