单例模式
单例模式的思想举足轻重,理解并掌握单例模式,可以一劳永逸,即做到一次编码,多次受益
以下是我的一些学习总结,欢迎评论区交流,共同进步~
0. 资源链接
链接:https://pan.baidu.com/s/1wGERqXH2ht5YPdCbxWiXeg?pwd=yo3k
提取码:yo3k
1.1 MonoSingleton.cs
using UnityEngine;
namespace FrameWorkStudy.MonoSingleton
{
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("SingletonOf" + typeof(T)).AddComponent<T>();
}
else
{
instance.Init();
}
}
return instance;
}
}
private void Awake()
{
if (instance == null)
{
instance = this as T;
Init();
}
}
/// <summary>
/// 子类用作初始化操作
/// </summary>
public virtual void Init()
{
}
}
}
1.2 ResourceMgr.cs
using FrameWorkStudy.MonoSingleton;
using UnityEngine;
namespace FrameWorkStudy.Mgr
{
public class ResourceMgr : MonoSingleton<ResourceMgr>
{
public void PrintInfo()
{
Debug.Log("i'm ResourceMgr Script...");
}
// 其他逻辑
}
}
1.3 Test.cs
using FrameWorkStudy.Mgr;
using UnityEngine;
public class Test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
ResourceMgr.Instance.PrintInfo();
}
}