Unity3D - 单例模式和静态类模板
2017-12-28 09:18
197 查看
单例模式我相信是所有设计模式之中运用最广泛的设计模式之一。
今天我们就来看看在unity中如何使用单例模式,在unity中,我们分两种单例,一种是继承monobehavior的单例,一种是普通单例。
using UnityEngine;
using System.Collections;
public class Singleton<T> : MonoBehaviour where T : Component
{
private static readonly object syslock = new object();
private static T _instance;
public static T Instance
{
get
{
if (_instance == null)
{
lock (syslock)
{
_instance = FindObjectOfType(typeof(T)) as T;
if (_instance == null)
{
GameObject obj = new GameObject(typeof(T).Name);
obj.hideFlags = HideFlags.DontSave;
obj.hideFlags = HideFlags.HideAndDontSave;
_instance = (T)obj.AddComponent(typeof(T));
}
}
}
return _instance;
}
}
public virtual void Awake()
{
DontDestroyOnLoad(this.gameObject);
if (_instance == null)
{
_instance = this as T;
}
else
{
Destroy(gameObject);
}
}
public static bool IsBuild
{
get
{
return _instance != null;
}
}
}
今天我们就来看看在unity中如何使用单例模式,在unity中,我们分两种单例,一种是继承monobehavior的单例,一种是普通单例。
using UnityEngine;
using System.Collections;
public class Singleton<T> : MonoBehaviour where T : Component
{
private static readonly object syslock = new object();
private static T _instance;
public static T Instance
{
get
{
if (_instance == null)
{
lock (syslock)
{
_instance = FindObjectOfType(typeof(T)) as T;
if (_instance == null)
{
GameObject obj = new GameObject(typeof(T).Name);
obj.hideFlags = HideFlags.DontSave;
obj.hideFlags = HideFlags.HideAndDontSave;
_instance = (T)obj.AddComponent(typeof(T));
}
}
}
return _instance;
}
}
public virtual void Awake()
{
DontDestroyOnLoad(this.gameObject);
if (_instance == null)
{
_instance = this as T;
}
else
{
Destroy(gameObject);
}
}
public static bool IsBuild
{
get
{
return _instance != null;
}
}
}
using UnityEngine; using System.Collections; using System.Collections.Generic; public class TownsSingleton : Singleton<TownsSingleton> { }
相关文章推荐
- Unity3D - 单例模式和静态类
- 【Unity3D与23种设计模式】模板方法模式(Template Method)
- java设计模式----模板模式
- 设计模式-行为设计模式:模板方法设计模式 TemplateMethod
- 模板设计模式
- 组件协作模式--Tmplate Method模板方法
- 设计模式(23)--模板模式
- 在objective-c中实现模板方法模式(template method)
- (九)模板方法模式
- 设计模式:模板方法模式
- Java设计模式透析之 —— 模板方法(Template Method)
- Unity3D Editor模式下批量修改prefab
- 设计模式学习-----模板方法模式
- Unity3d之设计模式(三)观察者模式
- 简单的木马模板 模式
- Unity3d 设计模式博客
- 模板模式(Template Pattern)
- Template Method 模板方法模式代码
- Qt模板模式
- Java设计模式——模板模式