简单的声音管理类,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[DisallowMultipleComponent]
public class AudioManger : MonoBehaviour {
private static AudioManger instance;
private AudioSource bgSource;
private AudioSource soundSource;
public AudioClip bgMusicClip;//背景音乐的clip
public List<AudioClip> soundAudioClips=new List<AudioClip>();//存放音效clip的列表,可面板赋值
public static AudioManger Instance
{
get
{
if (instance == null)
{
GameObject audioManger = new GameObject("AudioManger");
instance= audioManger.AddComponent<AudioManger>();
audioManger.AddComponent<AudioSource>();
audioManger.AddComponent<AudioSource>();
}
return instance;
}
}
private void Awake()
{
if (instance == null)
{
instance = this;
AudioSource[] sources = this.GetComponents<AudioSource>();
bgSource = sources[0];
soundSource = sources[1];
}
else
{
Destroy(gameObject);
}
DontDestroyOnLoad(this);
}
private void Start()
{
// PlayBGMusic();
}
/// <summary>
/// 播放背景音乐
/// </summary>
public void PlayBGMusic()
{
bgSource.clip = bgMusicClip;
bgSource.loop = true;
bgSource.Play();
}
/// <summary>
///停止背景音乐
/// </summary>
public void StopBgMusic()
{
bgSource.Stop();
bgSource.loop =false;
bgSource.clip = null;
}
/// <summary>
/// 播放指定名称的clip音效
/// </summary>
/// <param name="clipName">clip的名字</param>
public void PlaySoundClip(string clipName)
{
if (string.IsNullOrEmpty(clipName)) return;
for (int i = 0; i < soundAudioClips.Count; i++)
{
if (soundAudioClips[i].name == clipName)
{
soundSource.clip = soundAudioClips[i];
soundSource.loop = false;
soundSource.Play();
}
}
}
}