Health/Assets/Scripts/Service/AudioManager.cs

113 lines
2.0 KiB
C#

using SRF;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
//声音管理器
public class AudioManager : MonoSingleton<AudioManager>
{
private Queue<string> _CVFiles = new Queue<string>();
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<AudioSource> _cacheAudioSource;
public float CVVolume
{
get => _cvVolume;
set => _cvVolume = value;
}
public override void Init()
{
_cvSouce = gameObject.GetComponentOrAdd<AudioSource>();
_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<AudioClip>($"{type}/{path}");
return retVal;
}
}