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); } }
/// <summary>播放一个3D声音</summary> public void PlayAudio3D(string audioName, Transform target, bool isLoop = false, DelAudioCallback audioCallback = null) { PlayAudio(audioName, target, isLoop, audioCallback); }
/// <summary>播放一个2D声音</summary> public void PlayAudio2D(string audioName, bool isLoop = false, DelAudioCallback audioCallback = null) { PlayAudio(audioName, null, isLoop, audioCallback); }