Unity中设计模式应用(一):单例模式
来源:互联网 发布:立林jb2000 进入编程 编辑:程序博客网 时间:2024/06/05 08:52
一.单例模式简介
定义:
单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中一个类只有一个实例存在而且该实例易于被外界访问。
特点:
1.某个类只能有一个实例 2.它必须自行创建这个实例 3.它必须自行向整个系统提供这个实例
二.Unity泛型单例
1.实现
using UnityEngine;using System.Collections;public class UnitySingleton<T> : MonoBehaviour where T:Component{ private static T m_Instance; public static T instance { get { if (m_Instance == null) { m_Instance = FindObjectOfType (typeof(T)) as T; if (m_Instance == null) { GameObject obj = new GameObject (typeof(T).GetType ().ToString()); m_Instance = obj.AddComponent<T> (); obj.hideFlags = HideFlags.HideAndDontSave; } } return m_Instance; } } protected virtual void Awake() { DontDestroyOnLoad (this.gameObject); if (m_Instance == null) { m_Instance = this as T; } else { //说明该单例已经存在,为了保证单例的唯一性所销毁这个物体 GameObject.Destroy (this.gameObject); } }}
2.使用Part1
using UnityEngine;using System.Collections;public class AudioSourceManager : UnitySingleton<AudioSourceManager> { public AudioSource audioSource; public string path = "Swipe"; protected override void Awake () { base.Awake (); audioSource = gameObject.AddComponent<AudioSource> (); audioSource.playOnAwake = false; } public void MakeSomeNoise() { audioSource.clip = Resources.Load (path, typeof(AudioClip)) as AudioClip; audioSource.Play (); }}
3.使用Part2
using UnityEngine;using System.Collections;using UnityEngine.SceneManagement;public class SingletonTest : UnitySingleton<SingletonTest> { protected override void Awake() { base.Awake (); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetKeyDown (KeyCode.M)) { AudioSourceManager.instance.MakeSomeNoise (); } if (Input.GetKeyDown (KeyCode.N)) { if (SceneManager.GetActiveScene ().name == "Singleton1") { SceneManager.LoadSceneAsync ("Singleton2", LoadSceneMode.Single); } else { SceneManager.LoadSceneAsync ("Singleton1", LoadSceneMode.Single); } } }}
4.场景
阅读全文
0 0
- Unity中设计模式应用(一):单例模式
- 设计模式(一) 单例模式
- 设计模式(一):单例模式
- 单例模式---设计模式(一)
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)单例模式
- 设计模式-单例模式(一)
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)--单例模式
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 设计模式(一) 单例模式
- 设计模式(一)--单例模式
- 设计模式(一):单例模式
- 火车购座
- spark--transform算子--coalesce
- 正则表达式替换指定位置的字符串
- CSS要点记录
- Java 普通队列 和 优先级队列 的使用
- Unity中设计模式应用(一):单例模式
- JavaWeb中的Filter概述
- X264编码流程详解
- Intent 笔记(一)
- 2010 ACM/ICPC 福州赛区 Problem J(穷举)
- 判断APP用户手机是否开启了定位服务
- ajax全局配置加载中
- SQL语句的同构与异构的区别
- linux下编译使用lua及cjson