113 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|