using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class SoundGroup
{
public AudioClip audioClip;
public string soundName;
}
public class SoundManager : MonoBehaviour
{
public List<SoundGroup> bgm_List = new List<SoundGroup>();
public List<SoundGroup> sound_List = new List<SoundGroup>();
public static SoundManager Instance;
public AudioSource Music{ set { music = value; } get { return music; } }
public AudioSource Voice { set { voice = value; } get { return voice; } }
private AudioSource music;
private AudioSource voice;
void Awake()
{
Instance = this;
if (music == null)
music = this.gameObject.AddComponent<AudioSource>();
if (voice == null)
voice = this.gameObject.AddComponent<AudioSource>();
}
public void PlayBgm(string _bgmName)
{
music.clip = bgm_List[FindBgm(_bgmName)].audioClip;
music.loop = true;
music.Play();
}
public void PlayBgm(int index = 0)
{
music.clip = bgm_List[index].audioClip;
music.loop = true;
music.Play();
}
public void StopBgm()
{
music.Stop();
}
public int FindBgm(string _bgmName)
{
int i = 0;
while (i < bgm_List.Count)
{
if (bgm_List[i].soundName == _bgmName)
{
return i;
}
i++;
}
return i;
}
public void PlayVoice(string _voiceName)
{
voice.Stop();
voice.clip = bgm_List[FindBgm(_voiceName)].audioClip;
voice.loop = true;
voice.Play();
}
public void StopVoice(string _voiceName)
{
voice.clip = bgm_List[FindBgm(_voiceName)].audioClip;
voice.Stop();
}
public void PlaySound(string _soundName)
{
AudioSource.PlayClipAtPoint(sound_List[FindSound(_soundName)].audioClip, transform.position, voice.volume);
}
public void PlaySound(string _soundName, Vector3 _pos)
{
AudioSource.PlayClipAtPoint(sound_List[FindSound(_soundName)].audioClip, _pos, voice.volume);
}
public int FindSound(string _soundName)
{
int i = 0;
while (i < sound_List.Count)
{
if (sound_List[i].soundName == _soundName)
{
return i;
}
i++;
}
return i;
}
}
[Unity] 简单声音管理器
于 2022-01-18 16:12:09 首次发布