【Unity框架学习】单例模板
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 不继承MonoBehaviour
public class BaseSingleton<T> where T : BaseSingleton<T>, new()
{
private static T instance;
public static T Instance
{
get
{
if (instance == null)
{
if (instance == null)
{
instance = new T();
instance.Init();
}
}
return instance;
}
}
virtual public void Init()
{
}
}
// 继承自MonoBehaviour
public class MonoSingleton<T> : MonoBehaviour where T:MonoSingleton<T>
{
private static T instance;
public static T Instance {
get
{
if(instance == null)
{
// 在场景中根据类型查找引用
instance = FindObjectOfType<T>();
if(instance == null)
{
// 创建脚本对象
new GameObject("Singleton of "+typeof(T)).AddComponent<T>();
}
else
{
instance.Init();
}
}
return instance;
}
}
public void Awake()
{
if(instance == null)
{
instance = this as T;
Init();
}
}
public virtual void Init()
{
}
}
本文作者:香菇0_0
本文链接:https://www.cnblogs.com/Xiang-gu/p/16512356.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步