3d素材Unity 遊戲框架搭建 (一) 概述

首先感謝做者涼鞋的筆記的分享,但願你們對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/

相關文章
相關標籤/搜索