Files
5.24BuYu/Assets/Framework/Tool/AudioManager.cs
T
2026-04-29 23:53:55 +08:00

151 lines
4.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public enum AudioType
{
None,
BG,
FX,
}
public class AudioManager : MonoSingleton<AudioManager>
{
Dictionary<AudioType,AudioSource> dic_audioList=new Dictionary<AudioType, AudioSource> ();
public AudioMixer audioMixer;
//public AudioMixer mixer;
protected override void Awake()
{
base.Awake();
var v = UIManager.Instance.transform.GetChild(0).GetComponents<AudioSource>();
dic_audioList.Add(AudioType.BG, v[0]);
v[0].outputAudioMixerGroup = audioMixer.FindMatchingGroups("BG")[0];
dic_audioList.Add(AudioType.FX, v[1]);
v[1].outputAudioMixerGroup = audioMixer.FindMatchingGroups("FX")[0];
int a = PlayerPrefs.GetInt("first");
if (a==0)
{
PlayerPrefs.SetFloat("slider_AudioBG",1f);
PlayerPrefs.SetFloat("slider_FX", 1f);
PlayerPrefs.SetInt("first",1);
}
float value = PlayerPrefs.GetFloat("slider_AudioBG");
audioMixer.SetFloat("BGVolume", value * 100 - 80);
value = PlayerPrefs.GetFloat("slider_FX");
audioMixer.SetFloat("FXVolume", value*100-80);
dic_audioList[AudioType.BG].outputAudioMixerGroup = audioMixer.FindMatchingGroups("Master/BG")[0];
dic_audioList[AudioType.FX].outputAudioMixerGroup = audioMixer.FindMatchingGroups("Master/FX")[0];
}
public AudioSource GetAudioSource(AudioType audioType)
{
if (dic_audioList.ContainsKey(audioType))
{
return dic_audioList[audioType];
}
else
return null;
}
public void StopBG()
{
AudioType audioType = AudioType.BG;
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].Stop();
}
}
public void ChangeBG(int audioID)
{
if (audioID == 0)
return;
if (AudioResourcesData.audioClipDic.ContainsKey(audioID))
{
AudioClip audioClip = AudioResourcesData.audioClipDic[audioID];
AudioType audioType = AudioType.BG;
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].clip = audioClip;
dic_audioList[audioType].Play();
}
}
else
{
//UIManager.Instance.ShowBoardError("未找到"+audioID);
Debug.LogError("未找到音频ID: " + audioID);
}
}
public void ChangeBG(AudioClip audioClip)
{
AudioType audioType=AudioType.BG;
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].clip = audioClip;
dic_audioList[audioType].Play();
}
}
public void PlayerFX(int audioID)
{
if (audioID == 0)
return;
if (AudioResourcesData.audioClipDic.ContainsKey(audioID))
{
AudioClip audioClip = AudioResourcesData.audioClipDic[audioID];
AudioType audioType = AudioType.FX;
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].PlayOneShot(audioClip);
}
}
else
{
//UIManager.Instance.ShowBoardError("未找到"+audioID);
Debug.LogError("未找到音频ID: " + audioID);
}
}
public void PlayFX(AudioClip audioClip)
{
AudioType audioType = AudioType.FX;
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].PlayOneShot(audioClip);
}
}
public bool UpdateAudioClip(AudioType audioType,AudioClip audioClip)
{
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].clip=audioClip;
dic_audioList[audioType].Play();
return true;
}
else
return false;
}
public bool PlayOneShot(AudioType audioType, AudioClip audioClip)
{
if (dic_audioList.ContainsKey(audioType))
{
dic_audioList[audioType].PlayOneShot(audioClip);
return true;
}
else
return false;
}
}