在Unity3D 中单例是一个设计模式,可以方便在一个工程中,对单一的游戏对象的脚本组件的控制与调用.
相比大多数的人都会使用伪单例来解决.虽然,伪单例使用起来非常的简单方便,但只适用于一些小的工程项目中,而且使用时,会产生多次声明的错误使用,使用起来并不是非常的好用.
今天我给大家带来一个简单方便的实现单例的方法,仅仅只需要一个脚本,和几行代码就可以很好的实现单例模式的使用,而且可以避免很多的错误产生.希望大家可以喜欢,相互支持和帮助.下面是脚本部分.
添加单例模板类(全局公用的定义单例的脚本组件,供继承使用)using UnityEngine;
/// <summary>
/// 功能:添加单例模板类,在想要创建单例的脚本中后面继承Singleton<T>并添加下面的两行代码,就可以实现单例功能 例子(继承): public class GameManager : Singleton<GameManager>
/// private void Init(){}
/// void Awake(){ this.Init();}
/// 创建时间: 2015年11月1日 15:03
/// </summary>
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour {//脚本单例后接泛型<T> 继承 MonoBehaviour, 约束泛型<T>(也就是你要定义单例的脚本) : 继承MonoBehaviour where后面接约束条件
//这里的泛型<T> 就是代表要定义的单例脚本
private static T _instance;//定义静态的泛型<T>的类型的变量 _instance
private static object _lock = new object();//定义一个静态的objec类型的_lock并实例化
private static bool applicati