Unity简单的单例实例

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 定义端
/// </summary>
public class AudioGlobe : MonoBehaviour {
    //1。全局事件注册
    //2.单例 全局类   向外提供一个接口
    private static AudioGlobe audios;
    public static AudioGlobe inistance
    {
        get {
            if (audios == null)
            {
                audios = GameObject.FindObjectOfType
                    (typeof(AudioGlobe)) as AudioGlobe;
                if (audios == null)
                {
                    GameObject go = new GameObject();
                  audios=  go.AddComponent<AudioGlobe>();
                  go.name = "AudioGlobe";

                }

            }
            return audios;
        }
    }

    private AudioClip[] audioClips;
    void Start () {
      audioClips=
          Resources.LoadAll<AudioClip>("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<AudioClip>
            (audioClips, p => p.name == audioName);
        //我们是否找到了音频  没找到的话返回
    if (item == null) return;
        //将要播放的AudioSource的音频修改为玩家要播放的音频
    AudioSource source = obj.GetComponent<AudioSource>();
    source.clip = item;
    source.Play();
    source.loop = isLoop;

    }
    /// <summary>
    /// 暂停
    /// </summary>
    /// <param name="obj"></param>
    public void PauseClip(GameObject obj)
    {
        obj.GetComponent<AudioSource>().Pause();
    }
    // Update is called once per frame
    void Update () {

    }
}

调用单例

public class TestAudio : MonoBehaviour {

    void Start () {
       // AudioGlobe.inistance.Test();
        AudioGlobe.inistance.PlayClip
            ("BackgroundMusic", gameObject,true);
    }

    void Update () {
        if (Input.GetKeyDown(KeyCode.Space))
            AudioGlobe.inistance.PauseClip(gameObject);
    }
}



猜你喜欢

转载自blog.csdn.net/fuliyefly/article/details/78289184