IEnumerator play(string assetPath, AudioAssetMode playMode = AudioAssetMode.Asset) { AudioSource audioSource = _audioSourceCache.Find((source) => { return(!source.isPlaying); }); if (!audioSource) { audioSource = _gameObject.AddComponent <AudioSource>(); _audioSourceCache.Add(audioSource); } AudioClip audioClip = null; if (_audioClipCache.ContainsKey(assetPath)) { audioClip = _audioClipCache[assetPath]; } else { if (playMode == AudioAssetMode.Asset) { var loader = Addressables.LoadAssetAsync <AudioClip>(assetPath); yield return(loader); audioClip = loader.Result; } else if (playMode == AudioAssetMode.File) { } _audioClipCache.Add(assetPath, audioClip); } audioSource.clip = audioClip; audioSource.loop = false; audioSource.Play(); }
public void Play(string assetPath, AudioAssetMode playMode = AudioAssetMode.Asset) { #if !UNITY_WEBGL play(assetPath, playMode).Start(); #endif }