1. 程式人生 > >Unity的架構常用的方式簡單總結

Unity的架構常用的方式簡單總結

什麼是架構?

架構是一個約定,一個規則,一個大家都懂得遵守的共識。那這是什麼樣的約定、什麼樣的規則、什麼樣的共識呢?

我以包為例,我經常出差,雙肩揹包裡裝了不少東西。膝上型電腦、電源、2 個上網絡卡、滑鼠、USB 線、一盒大的名片、一盒小的名片、口香糖、Mini-DisplayPort 轉 VGA 介面、U 盤、幾根筆、小螺絲刀、洗漱用品、乾淨衣服、襪子、香水、、錢包、Token 卡、耳機、紙巾、USB 線、U 盤等。這個包有很多格子,最外面的格子我放常用的,比如筆、紙、一盒小的名片等;中間的格子一般放的是衣服、襪子、洗漱用品、香水等;靠背的那個大格子放了膝上型電腦,和膝上型電腦相近的小格子放的是兩個上網絡卡、Mini-DisplayPort 轉 VGA 介面、大盒名片、記事本,和膝上型電腦相近的大格子放的是電源、滑鼠、口香糖等。

我閉著眼睛都可以將我的東西從包裡掏出來,閉著眼睛都可以將東西塞到包裡!但是,非常不幸的是,一旦被人整理過我的包,那我就很慘了,老是因為找不到東西而變得抓狂!

這個包就是我放所有物品的“架構”,每一個東西放置的位置就是我的“約定、規則、共識”。倘若別人也知道我的“架構”、我的“約定、規則、共識”,那麼不管她怎麼動我的包,我都照樣能夠輕易的拿東西或者放東西。進一步,如果我的同事也知道我的“架構”,知道我的“約定、規則、共識”,那麼他們什麼時候動我的包,我也毫無所知!——道法自然 《10 年感觸:架構是什麼?——消滅架構!》

什麼是框架?

框架(framework)是一個框子--指其約束性,也是一個架子--指其支撐性。——360 百科

小結

本小節對框架和架構概念做了簡單的認識,得出了以下兩個結論:

(1)架構是“約定、規則、共識” (2)框架具有約束性和支撐性  

關於Unity的架構有如下幾種常用的方式簡單總結如下:

1.EmptyGO:

  在 Hierarchy 上建立一個空的 GameObject,然後掛上所有與 GameObject 無關的邏輯控制的指令碼。使用GameObject.Find() 訪問物件資料。

缺點:邏輯程式碼散落在各處,不適合大型專案。

2.Simple GameManager:

  所有與 GameObject 無關的邏輯都放在一個單例中。 缺點:單一檔案過於龐大。

3.Manager Of Managers:

將不同的功能單獨管理。如下:

  • MainManager: 作為入口管理器。
  • EventManager: 訊息管理。
  • GUIManager: 圖形檢視管理。
  • AudioManager: 音效管理。
  • PoolManager: GameObject管理(減少動態開闢記憶體消耗,減少GC)。
  • LevelManager: 關卡管理。
  • GameManager: 遊戲管理。
  • SaveManager: 配置&儲存管理。
  • MenuManager 選單管理。

4.將 View 和 Model 之間增加一個媒介層。

MVCS:StrangeIOC 外掛。

MVVM:uFrame 外掛。

5. ECS (Entity Component Based System)

Unity 是基於 ECS,比較適合 GamePlay 模組使用。 還有比較有名的 Entitas-CSharp