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); } }
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)); }
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)); }
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)); }