public class AudioGlobe : MonoBehaviour {
//1。全局事件注册
//2.单例 全局类 向外提供一个接口
private static AudioGlobe audios;
public static AudioGlobe inistance
{
get {
if (audios == null)
{
//找到工程中带有AudioGlobe的
audios = GameObject.FindObjectOfType(typeof(AudioGlobe)) as AudioGlobe;
//如果没有找到
if (audios == null)
{
//新建一个游戏物体
GameObject go = new GameObject();
//为物体添加AudioGloriabe并获取它
audios= go.AddComponent();
go.name = "AudioGlobe";
}
}
return audios;
}
}
private AudioClip[] audioClips;void Start () {
audioClips = Resources.LoadAll("AudioClips");
Debug.Log(audioClips.Length);
}
public void PlayClip(string audioName,GameObject obj,bool isLoop)
{
//音频的数组是否是空值或者没值 如果是 跳出当前方法
if (audioClips == null || audioClips.Length == 0)
return;
//在我们音频数组中找到名称相同的音频
AudioClip item = Array.Find(audioClips, p => p.name == audioName);
//我们是否找到了音频 没找到的话返回
if (item == null) return;
//将要播放的AudioSource的音频修改为玩家要播放的音频
AudioSource source = obj.GetComponent();
source.clip = item;
source.Play();
source.loop = isLoop; }
//暂停
public void PauseClip(GameObject obj) { obj.GetComponent().Pause();
}
// Update is called once per frame
void Update () {
}
}
//调用
public class TestAudio : MonoBehaviour {
// Use this for initialization
void Start () {
// AudioGlobe.inistance.Test();
AudioGlobe.inistance.PlayClip("BackgroundMusic", gameObject,true);
}
// Update is called once per frame
void Update () {
//暂停
if (Input.GetKeyDown (KeyCode.Space)) {
AudioGlobe.inistance.PauseClip (gameObject);
}
}
}
网友评论