1. 程式人生 > >遊戲程式碼規範例項之單例

遊戲程式碼規範例項之單例

遊戲開發中的單例介紹:

  1. 遊戲單例:以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;
        }
    }

     

  2. 資料單例:不需要額外操作,按語言規範新建即可。

    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;
        }
    }