using SRF; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; //声音管理器 public class AudioManager : MonoSingleton { private Queue _CVFiles = new Queue(); private AudioSource _cvSouce; private readonly float _cvCDTime = 0.2f; private float _cvCDTimer = 0; //音乐音量 private float _musicVolume; public float MusicVolume { get => _musicVolume; set => _musicVolume = value; } private float _seVolume; public float SEVolume { get => _seVolume; set => _seVolume = value; } private float _cvVolume; private Queue _cacheAudioSource; public float CVVolume { get => _cvVolume; set => _cvVolume = value; } public override void Init() { _cvSouce = gameObject.GetComponentOrAdd(); _cvSouce.name = "CVSource"; } //播放音乐 public void PlayMusic(string name) { } public void PlaySE(string name) { } public void PlayCV(string name) { } public void PlayCVInQueue(string name) { _CVFiles.Enqueue(name); } private void Update() { //播放队列中音频 if (_CVFiles.Count > 0) { //正在播放 if (_cvSouce.isPlaying) { return; } //播放完成后等待0.5秒 if (_cvCDTimer < _cvCDTime) { _cvCDTimer += Time.deltaTime; return; } _cvCDTimer = 0; var name = _CVFiles.Dequeue(); var clip = GetAudioClip("CV", name); _cvSouce.clip = clip; _cvSouce.Play(); } } public void StopMusic() { } public void StopSE() { } public void StopCV() { } private AudioClip GetAudioClip(string type, string path) { var retVal = Resources.Load($"{type}/{path}"); return retVal; } }