設計模式
如同其他軟體,Unity在開發上也會使用到Design Pattern,在此便簡單列出幾項常用的範例。
Scene Manager
Coming Soon...
Ref: Unity:設計靈活的無縫場景轉換機制
Game Manager in Singleton
public enum GameState { NullState, Intro, MainMenu, Game }
public delegate void OnStateChangeHandler();
public class GameManager : MonoBehaviour {
static GameManager _instance;
private static object _lock = new object();
public GameState gameState { get; private set; }
public event OnStateChangeHandler OnStateChange;
public static bool isActive {
get {
return _instance != null;
}
}
public static GameManager instance
{
get
{
if (applicationIsQuitting) {
return null;
}
lock(_lock)
{
if (_instance == null)
{
_instance = Object.FindObjectOfType(typeof(GameManager)) as GameManager;
if (_instance == null)
{
GameObject go = new GameObject();
_instance = go.AddComponent<GameManager>();
go.name = "(singleton) "+typeof(GameManager).ToString();
DontDestroyOnLoad(go);
}
}
return _instance;
}
}
}
public void SetGameState(GameState gameState) {
this.gameState = gameState;
if(OnStateChange != null) {
OnStateChange();
}
}
private static bool applicationIsQuitting = false;
public void OnDestroy () {
applicationIsQuitting = true;
}
}
參考連結
- toolbox (a better way to use singleton)
- singleton intro
- gamemanager
- singleton abuse