示例#1
0
        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();
        }
示例#2
0
 public void Play(string assetPath, AudioAssetMode playMode = AudioAssetMode.Asset)
 {
     #if !UNITY_WEBGL
     play(assetPath, playMode).Start();
     #endif
 }