单例模式我相信是所有设计模式之中运用最广泛的设计模式之一。
今天我们就来看看在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>
{
}