第一章【萌新】单例Singleton
今天还了解了一下最简单的设计模式,单例(我是不会啦)。
在Unity中,大多数应用为仅存在一次的GameManager(或者其他什么Manager). 这样的gameobject,整个场景中只需要出现一个,也只能出现一个。与此同时,Manager作为一个老大哥一样的存在,他的小弟们经常需要拜访他,获取老大哥的对象也十分麻烦。因此使用单例模式来构造它可以使得Manager成为一个全局变量的存在,并且可以保证单例管理下不会造成内存溢出
代码:
public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
{
// 这是一个基类,需要单例化的类继承于此即可
// 如果需要还可以将Awake virtual掉,让他能够被子类override
public static T Instance { get; private set; }
protected void Awake()
{
if (Instance == null)
{
// 如果单例未被初始化,那么在唤醒的同时对其进行初始化
Instance = (T)this;
// 场景切换时,不要销毁我们的单例,保留其中正在运行的变量
DontDestroyOnLoad(gameObject);
}
else
{
// 场景切换回来,或者意外多次创建单例对象时,将多余的直接摧毁,保证导航窗口中仅有一个
Destroy(gameObject);
}
}
}
引用:
XmugBlog
My Blog
Status | In development |
Category | Book |
Author | xmug |
More posts
- 2021/03/07 - 抽象类与有限状态机(持续研究中)Mar 07, 2021
- 第一章【萌新】游戏设计模式Mar 06, 2021
- 第一章【萌新】开坑Mar 05, 2021
- 第一章【萌新】2D射线检测,Unity场景控制Mar 05, 2021
- 第一章【萌新】关于Unity中2D物体移动Mar 04, 2021
Leave a comment
Log in with itch.io to leave a comment.