unity泛型单例模式Singleton
程序员文章站
2022-04-03 15:36:18
...
一般的单例只要继承了泛型单例自身便不需要实现单例的代码也是单例,相当于为多数单例提供一个模板,节约时间。
如
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Singleton<T> : MonoBehaviour where T:Singleton<T>
{
private static T instance;
public static T Instance
{
get { return instance; }
}
protected virtual void Awake()
{
if (instance != null)
Destroy(gameObject);
else
instance = (T)this;
}
public static bool IsInitialized
{
get { return instance != null; }
}
protected virtual void OnDestroy()
{
if(instance==this)
{
instance = null;
}
}
}
T即为单例的名字
如
public class MouseManager : Singleton<MouseManager>
一个单例就这样实现了
protected virtual void Awake()
为保护类的虚函数,只有继承类可以修改这个Awake()若有什么需要可以重新修改Awake()函数, public static bool IsInitialized
{
get { return instance != null; }
}是判断改单例是否存在;