Unity單例模式

單例模式:
保證一個類只有一個實例,並且提供一個訪問它的全局訪問點。
如果交互總是建立在兩個或多個腳本之間,互相使用腳本實例會越多越亂。如果交互都是在單例腳本上實現的,會降低耦合度。一些整個場景中只有一個而且又想方便的隨時訪問,例如管理音樂的腳本,管理各種UI的腳本,管理
場景切換的腳本…

using UnityEngine;  
using System.Collections;  

public class UnitySingleton<T> : MonoBehaviour //泛型類,T代表通用數據類型  
where T:Component//T繼承於Component  
{  
    private static T _instance;  
    public static T instance{//全局訪問點  
        get{  
            if(_instance==null){  
                _instance=FindObjectOfType(typeof(T))as T;  
                if(_instance==null){  
                    GameObject obj= new GameObject();  
                    obj.hideFlags=HideFlags.HideAndDontSave;  
                    _instance = obj.AddComponent (typeof(T)) as T;  
                }  
            }  
            return _instance;  
        }  
    }  

    public virtual void Awake(){  
        DontDestroyOnLoad (this.gameObject);  
        if (_instance == null) {  
            _instance = this as T;  
        }  
    }  
}  

創建單例類

public class GameManager : UnitySingleton<GameManager> {  
       public void Hello(){  
            ...  
    }  
}  

調用

GameManager.instance.Hello();  
發佈了21 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章