Unity 小知识点学习
Unity中常用的几种单例写法
单例模式(Singleton Pattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点
单例模式优点
单例模式核心在于对于某个单例类,在系统中同时只存在唯一一个实例,并且该实例容易被外界所访问;
意味着在内存中,只存在一个实例,减少了内存开销;
单例模式的写法细分的话写法有很多种,但是核心都差不多,下面总结了几种最常用的单例模式提供参考,直接套用即可!
第一种:在Unity中最普通的单例写法,在Awake中获取,使用的时候直接调用即可
public static Singleton instance; private void Awake() { instance = this; }
第二种:持久化的写法,第一种的拓展,这种方法相比较第一种更可靠。在找不到单例方法时新建一个物体防止被销毁,然后接着调用即可
private static Singleton instance; private void Awake() { instance = this; } public static Singleton GetInstance { if(instance==null) { GameObject go = new GameObject("Singleton"); // 创建一个新的GameObject DontDestroyOnLoad(go); // 防止被销毁 _instance = go.AddComponent<Singleton>(); // 将实例挂载到GameObject上 } return instance; }
第三种:可以不用挂载到场景中(),使用的时候直接调用
private static Singleton instance; public static Singleton GetInstance() { if(instance==null) { instance =new Singleton (); } return instance; }