遊戲程式碼規範例項之單例
阿新 • • 發佈:2018-12-16
遊戲開發中的單例介紹:
- 遊戲單例:以Unity示例,需要繼承MonoBehaviour的需要對引擎做出一些特殊處理的單例生成方式
public abstract class GameInst<T> : MonoBehaviour where T : MonoBehaviour, new() { static T _inst; public static T Inst { get { if (_inst == null) { //錯誤示範 //_inst = new T(); //正確示範: //_inst= new GameObject().AddComponent<T>();//DonDestroyOnLoad(); //小遊戲簡寫 查詢已經存在場景中的類,如果查詢不到為null _inst = FindObjectOfType(typeof(T)) as T; } return _inst; } } public static T GetInst() { if (_inst == null) { _inst = FindObjectOfType(typeof(T)) as T; } return _inst; } }
-
資料單例:不需要額外操作,按語言規範新建即可。
public abstract class DataInst<T> where T : new() { static T _inst; public static T Inst { get { if (_inst == null) { _inst = new T(); } return _inst; } } public static T inst { get { if (_inst == null) { _inst = new T(); } return _inst; } } public static T GetInst() { if (_inst == null) { _inst = new T(); } return _inst; } }