private void LoadSoundSuccessCallback(string soundAssetName, object soundAsset, float duration, object userData) { PlaySoundInfo playSoundInfo = userData as PlaySoundInfo; if (playSoundInfo == null) { throw new GameFrameworkException("Play sound info is invalid."); } PlaySoundErrorCode?errorCode = null; ISoundAgent soundAgent = playSoundInfo.SoundGroup.PlaySound(playSoundInfo.SerialId, soundAsset, playSoundInfo.PlaySoundParams, out errorCode); if (soundAgent != null) { m_PlaySoundSuccessEventHandler?.Invoke(this, new PlaySoundSuccessEventArgs(playSoundInfo.SerialId, soundAssetName, soundAgent, duration, playSoundInfo.UserData)); } else { m_SoundHelper.ReleaseSoundAsset(soundAsset); string errorMessage = string.Format("Sound group '{0}' play sound '{1}' failure.", playSoundInfo.SoundGroup.Name, soundAssetName); if (m_PlaySoundFailureEventHandler != null) { m_PlaySoundFailureEventHandler(this, new PlaySoundFailureEventArgs(playSoundInfo.SerialId, soundAssetName, playSoundInfo.SoundGroup.Name, playSoundInfo.PlaySoundParams, errorCode.Value, errorMessage, playSoundInfo.UserData)); return; } throw new GameFrameworkException(errorMessage); } }
/// <summary> /// 初始化播放声音成功事件的新实例。 /// </summary> /// <param name="serialId">声音的序列编号。</param> /// <param name="soundAssetName">声音资源名称。</param> /// <param name="soundAgent">用于播放的声音代理。</param> /// <param name="duration">加载持续时间。</param> /// <param name="userData">用户自定义数据。</param> public PlaySoundSuccessEventArgs(int serialId, string soundAssetName, ISoundAgent soundAgent, float duration, object userData) { SerialId = serialId; SoundAssetName = soundAssetName; SoundAgent = soundAgent; Duration = duration; UserData = userData; }
private void LoadAssetSuccessCallback(string soundAssetName, object soundAsset, float duration, object userData) { PlaySoundInfo playSoundInfo = (PlaySoundInfo)userData; if (playSoundInfo == null) { throw new Exception("Play sound info is invalid."); } if (m_SoundsToReleaseOnLoad.Contains(playSoundInfo.SerialId)) { m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); if (playSoundInfo.PlaySoundParams.Referenced) { ReferencePool.Release(playSoundInfo.PlaySoundParams); } ReferencePool.Release(playSoundInfo); m_SoundHelper.ReleaseSoundAsset(soundAsset); return; } m_SoundsBeingLoaded.Remove(playSoundInfo.SerialId); PlaySoundErrorCode?errorCode = null; ISoundAgent soundAgent = playSoundInfo.SoundGroup.PlaySound(playSoundInfo.SerialId, soundAsset, playSoundInfo.PlaySoundParams, out errorCode); if (soundAgent != null) { ISoundAgentHelper soundAgentHelper = soundAgent.Helper; soundAgentHelper.OnPlaySoundSuccess(playSoundInfo.UserData, soundAgent); if (playSoundInfo.PlaySoundParams.Referenced) { ReferencePool.Release(playSoundInfo.PlaySoundParams); } ReferencePool.Release(playSoundInfo); return; } m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); m_SoundHelper.ReleaseSoundAsset(soundAsset); string errorMessage = Utility.Text.Format("Sound group '{0}' play sound '{1}' failure.", playSoundInfo.SoundGroup.Name, soundAssetName); if (playSoundInfo.PlaySoundParams.Referenced) { ReferencePool.Release(playSoundInfo.PlaySoundParams); } ReferencePool.Release(playSoundInfo); throw new Exception(errorMessage); }
private void LoadSoundSuccessCallback(string soundAssetName, object soundAsset, float duration, object userData) { PlaySoundInfo playSoundInfo = (PlaySoundInfo)userData; if (playSoundInfo == null) { throw new GameFrameworkException("Play sound info is invalid."); } if (m_SoundsToReleaseOnLoad.Contains(playSoundInfo.SerialId)) { m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); ReferencePool.Release(playSoundInfo); m_SoundHelper.ReleaseSoundAsset(soundAsset); return; } m_SoundsBeingLoaded.Remove(playSoundInfo.SerialId); PlaySoundErrorCode?errorCode = null; ISoundAgent soundAgent = playSoundInfo.SoundGroup.PlaySound(playSoundInfo.SerialId, soundAsset, playSoundInfo.PlaySoundParams, out errorCode); if (soundAgent != null) { if (m_PlaySoundSuccessEventHandler != null) { m_PlaySoundSuccessEventHandler(this, new PlaySoundSuccessEventArgs(playSoundInfo.SerialId, soundAssetName, soundAgent, duration, playSoundInfo.UserData)); } ReferencePool.Release(playSoundInfo); return; } m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); m_SoundHelper.ReleaseSoundAsset(soundAsset); string errorMessage = Utility.Text.Format("Sound group '{0}' play sound '{1}' failure.", playSoundInfo.SoundGroup.Name, soundAssetName); if (m_PlaySoundFailureEventHandler != null) { m_PlaySoundFailureEventHandler(this, new PlaySoundFailureEventArgs(playSoundInfo.SerialId, soundAssetName, playSoundInfo.SoundGroup.Name, playSoundInfo.PlaySoundParams, errorCode.Value, errorMessage, playSoundInfo.UserData)); ReferencePool.Release(playSoundInfo); return; } ReferencePool.Release(playSoundInfo); throw new GameFrameworkException(errorMessage); }
public override void OnPlaySoundSuccess(object userData, ISoundAgent soundAgent) { PlaySoundEntityInfo playSoundInfo = (PlaySoundEntityInfo)userData; if (playSoundInfo != null) { SoundAgentHelperBase soundAgentHelper = (SoundAgentHelperBase)soundAgent.Helper; if (playSoundInfo.BindingEntity != null) { soundAgentHelper.SetBindingEntity(playSoundInfo.BindingEntity); } else { soundAgentHelper.SetWorldPosition(playSoundInfo.WorldPosition); } } }
private void LoadSoundSuccessCallback(string soundAssetName, object soundAsset, float duration, object userData) { PlaySoundInfo playSoundInfo = (PlaySoundInfo)userData; if (playSoundInfo == null) { throw new System.Exception("Play sound info is invalid."); } m_SoundsBeingLoaded.Remove(playSoundInfo.SerialId); if (m_SoundsToReleaseOnLoad.Contains(playSoundInfo.SerialId)) { Log.Debug("Release sound '{0}' on loading success.", playSoundInfo.SerialId.ToString()); m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); m_SoundHelper.ReleaseSoundAsset(soundAsset); return; } PlaySoundErrorCode?errorCode = null; ISoundAgent soundAgent = playSoundInfo.SoundGroup.PlaySound(playSoundInfo.SerialId, soundAsset, playSoundInfo.PlaySoundParams, out errorCode); if (soundAgent != null) { if (m_PlaySoundSuccessEventHandler != null) { m_PlaySoundSuccessEventHandler(this, new PlaySoundSuccessEventArgs(playSoundInfo.SerialId, soundAssetName, soundAgent, duration, playSoundInfo.UserData)); } } else { m_SoundsToReleaseOnLoad.Remove(playSoundInfo.SerialId); m_SoundHelper.ReleaseSoundAsset(soundAsset); string errorMessage = string.Format("Sound group '{0}' play sound '{1}' failure.", playSoundInfo.SoundGroup.Name, soundAssetName); if (m_PlaySoundFailureEventHandler != null) { m_PlaySoundFailureEventHandler(this, new PlaySoundFailureEventArgs(playSoundInfo.SerialId, soundAssetName, playSoundInfo.SoundGroup.Name, playSoundInfo.PlaySoundParams, errorCode.Value, errorMessage, playSoundInfo.UserData)); return; } throw new System.Exception(errorMessage); } }
/// <summary> /// 创建播放声音成功事件。 /// </summary> /// <param name="serialId">声音的序列编号。</param> /// <param name="soundAssetName">声音资源名称。</param> /// <param name="soundAgent">用于播放的声音代理。</param> /// <param name="duration">加载持续时间。</param> /// <param name="userData">用户自定义数据。</param> /// <returns>创建的播放声音成功事件。</returns> public static PlaySoundSuccessEventArgs Create(int serialId, string soundAssetName, ISoundAgent soundAgent, float duration, object userData) { PlaySoundSuccessEventArgs playSoundSuccessEventArgs = ReferencePool.Acquire <PlaySoundSuccessEventArgs>(); playSoundSuccessEventArgs.SerialId = serialId; playSoundSuccessEventArgs.SoundAssetName = soundAssetName; playSoundSuccessEventArgs.SoundAgent = soundAgent; playSoundSuccessEventArgs.Duration = duration; playSoundSuccessEventArgs.UserData = userData; return(playSoundSuccessEventArgs); }
public abstract void OnPlaySoundSuccess(object userData, ISoundAgent soundAgent);
void OnPlaySoundSuccess(object sender, GameEventArgs e) { UnityGameFramework.Runtime.PlaySoundSuccessEventArgs ne = (UnityGameFramework.Runtime.PlaySoundSuccessEventArgs)e; soundAgent = ne.SoundAgent; }