首页 > 代码库 > 【Unity】游戏中的单例
【Unity】游戏中的单例
游戏中需要一些 GameObject(例如网络管理器) 在游戏的整个生命周期都存在,而且是以单例的形式存在。
XGame 中实现这种单例的方式是,单例脚本都从 MonoSingle 类继承,MonoSingleton 的实现方法是在 Awake() 中调用DontDestroyOnLoad(gameObject);来保证单例。
MonoSingleton类的实现代码:
1 /// <summary> 2 /// Generic Mono singleton. 3 /// </summary> 4 using UnityEngine; 5 6 public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>{ 7 8 private static T mInstance = null; 9 10 public static T Instance{11 get{12 return mInstance;13 }14 }15 16 private void Awake(){17 18 if (mInstance == null)19 {20 DontDestroyOnLoad(gameObject);21 mInstance = this as T;22 mInstance.Init();23 }24 else25 {26 Destroy(gameObject);27 }28 }29 30 public virtual void Init(){}31 32 public virtual void Fini(){}33 34 35 private void OnApplicationQuit(){36 mInstance.Fini();37 mInstance = null;38 }39 }
需要单例控制的脚本,只要从 MonoSigleton 类继承就可以了,重写 Init 方法来实现单例自己的初始化,重写 Fini 实现自己的清理工作。例如:
【Unity】游戏中的单例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。