首先感謝做者涼鞋的筆記的分享,但願你們對3d素材unity有更多的瞭解!程序員
爲了重構手頭的一款項目,翻出來當時未3d素材Unity時候收藏的視頻3d素材Unity項目架構設計與開發管理》,對於我這種初學者來講全是乾貨。簡單的總結了一下,之後慢慢提煉。架構
3d素材Unity的架構有以下幾種經常使用的方式。spa
1.EmptyGO:插件
在Hierarchy上建立一個空的GameObject,而後掛上全部與GameObject無關的邏輯控制的腳本。使用GameObject.Find()訪問對象數據。 缺點:邏輯代碼散落在各處,不適合大型項目。架構設計
2.Simple GameManager:設計
全部與GameObject無關的邏輯都放在一個單例中。3d
缺點:單一文件過於龐大。orm
3.Manager Of Managers:視頻
將不一樣的功能單獨管理。以下:對象
MainManager: 做爲入口管理器。
EventManager: 消息管理。
GUIManager: 圖形視圖管理。
AudioManager: 音效管理。
*PoolManager: go管理(減小動態開闢內存消耗,減小GC)。
實現一個簡單的PoolManager
// 存儲動可服用的GameObject。
private List<GameObject> dormantObjects = new List<GameObject>();
// 在dormantObjects獲取與go類型相同的GameObject,若是沒有則new一個。
public GameObject Spawn(GameObject go)
{
GameObject temp = null;
if (dormantObjects.Count > 0)
{
foreach (GameObject dob in dormantObjects)
{
if (dob.name == go.name)
{
// Find an available GameObject
temp = dob;
dormantObjects.Remove(temp);
return temp;
}
}
}
// Now Instantiate a new GameObject.
temp = GameObject.Instantialte(go) as GameObject;
temp.name = go.name;
return temp;
}
// 將用完的GameObject放入dormantObjects中
public void Despawn(GameObject go)
{
go.transform.parent = PoolManager.transform;
go.SetActive(false);
dormantObject.Add(go);
Trim();
}
//FIFO 若是dormantObjects大於最大個數則將以前的GameObject都推出來。
public void Trim()
{
while (dormantObjects.Count > Capacity)
{
GameObject dob = dormantObjects[0];
dormantObjects.RemoveAt(0);
Destroy(dob);
}
}
缺點:
(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: 遊戲管理。
C#程序員整理的3d素材Unity 3D筆記(十二):3d素材Unity3D之單體模式實現GameManager
*SaveManager: 配置管理。
實現Resume,功能玩到一半數據臨時存儲。
推薦SaveManager插件。能夠Load、Save均採用二進制(快!!!)
全部C#類型均可以作Serialize。
數據混淆,截屏操做。
MenuManager 菜單管理。
4.將View和Model之間增長一個媒介層。
MVCS:StrangeIOC插件。
MVVM:uFrame插件。
看完了這篇分享,是否是對3d素材unity遊戲搭建有必定的瞭解了呢,若是能給您帶來一些幫助,匯寶盆萬分榮幸!來自:匯寶盆 http://www.narkii.com/resource/