Unity3D笔记(二)音频加载

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);

}

}

}

你可能感兴趣的:(Unity3D笔记(二)音频加载)