關於Unity的架構有如下幾種常用的方式。
1.EmptyGO
在Hierarchy上創建一個空的GameObject,然后掛上所有與GameObject無關的邏輯控制的腳本。使用GameObject.Find()訪問對象數據。
缺點:邏輯代碼散落在各處,不適合大型項目。
2.Simple GameManager
所有與GameObject無關的邏輯都放在一個單例中。
缺點:單一文件過於龐大。
3.Manager Of Managers。
將不同的功能單獨管理。如下:
MainManager: 作為入口管理器。
EventManager: 消息管理。
GUIManager: 圖形視圖管理。
AudioManager: 音效管理。
*PoolManager: go管理(減少動態開辟內存消耗,減少GC)。
缺點:
(1)不能管理prefabs。
(2)沒有進行分類。
更好的實現方式是將一個PoolManager分成:
若干個 SpawnPool。
每個SpawnPool分成PrefabPool和PoolManager。
PrefabPool負責Prefab的加載和卸載。
PoolManager與之前的PoolMananger功能一樣,負責GameObject的Spawn、Despawn和Trim。
要注意的是:
(1)每個SpawnPool是EmeptyGO。
(2)每個PoolManager管理兩個List (Active,Deactive)。
講了一堆,最后告訴有一個NB的插件叫Pool Manager- -。
*LevelManager: 關卡管理。
推薦插件:MadLevelManager。
GameManager: 游戲管理。