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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值