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}"); } }
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); } }); } }
/// <summary> /// 获取音频源 /// </summary> public AudioSource GetAudioSource(EAudioLayer layer) { return(_audioSourceWrappers[layer].Source); }
/// <summary> /// 查询频道音量 /// </summary> public float GetVolume(EAudioLayer layer) { return(_audioSourceWrappers[layer].Source.volume); }
/// <summary> /// 设置频道音量 /// </summary> public void Volume(EAudioLayer layer, float volume) { volume = Mathf.Clamp01(volume); _audioSourceWrappers[layer].Source.volume = volume; }
/// <summary> /// 查询频道是否静音 /// </summary> public bool IsMute(EAudioLayer layer) { return(_audioSourceWrappers[layer].Source.mute); }
/// <summary> /// 设置频道静音 /// </summary> public void Mute(EAudioLayer layer, bool isMute) { _audioSourceWrappers[layer].Source.mute = isMute; }
/// <summary> /// 暂停播放 /// </summary> public void Stop(EAudioLayer layer) { _audioSourceWrappers[layer].Source.Stop(); }
public AssetAudio(string location, EAudioLayer audioLayer) { AudioLayer = audioLayer; _assetRef = new AssetReference(location); }
public AssetAudio(string location, EAudioLayer audioLayer) { Location = location; AudioLayer = audioLayer; }