예제 #1
0
        private void PlayAudioClipInternal(EAudioLayer layer, AudioClip clip, bool isLoop)
        {
            if (clip == null)
            {
                return;
            }

            if (layer == EAudioLayer.Music || layer == EAudioLayer.Ambient || layer == EAudioLayer.Voice)
            {
                _audioSourceWrappers[layer].Source.clip = clip;
                _audioSourceWrappers[layer].Source.loop = isLoop;
                _audioSourceWrappers[layer].Source.Play();
            }
            else if (layer == EAudioLayer.Sound)
            {
                _audioSourceWrappers[layer].Source.PlayOneShot(clip);
            }
            else
            {
                throw new NotImplementedException($"{layer}");
            }
        }
예제 #2
0
 private void PlayAudioClip(EAudioLayer layer, string location, bool isLoop)
 {
     if (_assets.ContainsKey(location))
     {
         if (_assets[location].Clip != null)
         {
             PlayAudioClipInternal(layer, _assets[location].Clip, isLoop);
         }
     }
     else
     {
         // 新建加载资源
         AssetAudio assetAudio = new AssetAudio(location, layer);
         _assets.Add(location, assetAudio);
         assetAudio.Load((AudioClip clip) =>
         {
             if (clip != null)
             {
                 PlayAudioClipInternal(layer, clip, isLoop);
             }
         });
     }
 }
예제 #3
0
 /// <summary>
 /// 获取音频源
 /// </summary>
 public AudioSource GetAudioSource(EAudioLayer layer)
 {
     return(_audioSourceWrappers[layer].Source);
 }
예제 #4
0
 /// <summary>
 /// 查询频道音量
 /// </summary>
 public float GetVolume(EAudioLayer layer)
 {
     return(_audioSourceWrappers[layer].Source.volume);
 }
예제 #5
0
 /// <summary>
 /// 设置频道音量
 /// </summary>
 public void Volume(EAudioLayer layer, float volume)
 {
     volume = Mathf.Clamp01(volume);
     _audioSourceWrappers[layer].Source.volume = volume;
 }
예제 #6
0
 /// <summary>
 /// 查询频道是否静音
 /// </summary>
 public bool IsMute(EAudioLayer layer)
 {
     return(_audioSourceWrappers[layer].Source.mute);
 }
예제 #7
0
 /// <summary>
 /// 设置频道静音
 /// </summary>
 public void Mute(EAudioLayer layer, bool isMute)
 {
     _audioSourceWrappers[layer].Source.mute = isMute;
 }
예제 #8
0
 /// <summary>
 /// 暂停播放
 /// </summary>
 public void Stop(EAudioLayer layer)
 {
     _audioSourceWrappers[layer].Source.Stop();
 }
예제 #9
0
 public AssetAudio(string location, EAudioLayer audioLayer)
 {
     AudioLayer = audioLayer;
     _assetRef  = new AssetReference(location);
 }
예제 #10
0
 public AssetAudio(string location, EAudioLayer audioLayer)
 {
     Location   = location;
     AudioLayer = audioLayer;
 }