private void StopState(string audioName, AudioItem audioItem) { audioItem.Stop(); if (dicAllAudios.ContainsKey(audioName)) { dicAllAudios.Remove(audioName); } }
private void PlayState(string audioName, AudioItem audioItem) { audioItem.Play(Mute, volume); if (!dicAllAudios.ContainsKey(audioName)) { dicAllAudios.Add(audioName, audioItem); } }
/// <summary>设置循环播放</summary> public void SetLoop(string audioName, bool isLoop) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem != null) { audioItem.Audio.loop = isLoop; } }
/// <summary>设置播放进度(0-1)</summary> public void SetProgress(string audioName, float progress) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem != null) { audioItem.ChangeProgress(progress); } }
/// <summary>获取声音时间长度(单位:秒)</summary> public float GetTimeByName(string audioName) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem == null) { return(0); } return(audioItem.Time); }
/// <summary>获取声音播放进度(取值范围:0-1)</summary> public float GetProgressByName(string audioName) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem == null) { return(0); } return(audioItem.GetPlayProgress()); }
/// <summary>获取声音状态</summary> public AudioState GetAudioStateByName(string audioName) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem == null) { return(AudioState.Error); } return(audioItem.State); }
private void SetVolume() { foreach (string audioName in dicAllAudios.Keys) { AudioItem audioItem = dicAllAudios[audioName]; if (audioItem != null) { audioItem.Audio.volume = Volume; } } }
private void MuteToggle() { foreach (string audioName in dicAllAudios.Keys) { AudioItem audioItem = dicAllAudios[audioName]; if (audioItem != null) { audioItem.Audio.mute = Mute; } } }
/// <summary>继续播放声音(从暂停状态进度继续播放)</summary> public void FurtherAudioPlayback(params string[] audioNames) { for (int i = 0; i < audioNames.Length; i++) { string audioName = audioNames[i]; AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem != null) { audioItem.FurtherAudioPlayback(); } } }
/// <summary>重新播放声音(进度从0开始)</summary> public void ReplayAudios(params string[] audioNames) { for (int i = 0; i < audioNames.Length; i++) { string audioName = audioNames[i]; AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem != null) { audioItem.Replay(); } } }
private void LoadFinish(string audioName, AudioClip audioClip) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem == null) { return; } audioItem.Clip = audioClip; if (audioItem.State == AudioState.Loading) { ChangeState(audioName, AudioState.Play); } }
/// <summary>移除声音及相关声音组件</summary> public void RemoveAudios(params string[] audioNames) { for (int i = 0; i < audioNames.Length; i++) { string audioName = audioNames[i]; AudioItem audioItem = GetAudioItemByName(audioName); if (dicAllAudios.ContainsKey(audioName)) { dicAllAudios.Remove(audioName); } if (audioItem != null) { Destroy(audioItem.gameObject); } } }
private void PlayAudio(string audioName, Transform target, bool isLoop, DelAudioCallback audioCallback) { AudioConfigData audioData = audioConfig.GetDataByKey(audioName); if (audioData == null) { Debug.LogError(GetType() + "/PlayAudio()/ play audio error! audioName:" + audioName); return; } if (dicAllAudios.ContainsKey(audioName)) { AudioItem audioItem = GetAudioItemByName(audioName); if (audioItem != null && audioItem.State != AudioState.Loading && audioItem.State != AudioState.Error) { audioItem.AudioName = audioName; audioItem.OnAudioCallback = audioCallback; audioItem.target = target; ChangeState(audioName, AudioState.Play); } } else { GameObject item = new GameObject(audioName); AudioSource audioSource = item.AddComponent <AudioSource>(); audioSource.playOnAwake = false; audioSource.loop = isLoop; AudioItem audioItem = item.AddComponent <AudioItem>(); audioItem.AudioName = audioName; audioItem.OnAudioCallback = audioCallback; audioItem.target = target; audioItem.Audio = audioSource; dicAllAudios.Add(audioName, audioItem); ChangeState(audioName, AudioState.Loading); } }
private void PauseState(AudioItem audioItem) { audioItem.Pause(); }