天天看點

遊戲UI架構設計(一) : 架構設計理論篇

前幾天(2017年2月)看到一篇文章,國内王健林、馬雲等大咖們看好的未來十大最有“錢途”産業中,排名第一的就是“泛娛樂”。 是以我們發現最近幾年無論是BAT企業還是萬達等,都紛紛投資遊戲、電影、動漫等泛娛樂産業。

 本篇就基于Unity遊戲引擎UGUI為基礎,對UI界面遊戲架構做一些有益探索與研究。首先我們來研究一下大型遊戲項目中,沒有UI架構容易導緻與出現的問題?

遊戲UI架構設計(一)

---架構設計理論篇

  前幾天(2017年2月)看到一篇文章,國内王健林、馬雲等大咖們看好的未來十大最有“錢途”産業中,排名第一的就是“泛娛樂”。 是以我們發現最近幾年無論是BAT企業還是萬達等,都紛紛投資遊戲、電影、動漫等泛娛樂産業。

  随着人們物質生活的不斷提高,遊戲(包含端遊/手遊/VR/AR等遊戲形式)産業隻會越來越繁榮。但是問題來了,我們一線的遊戲研發人員面對越來越複雜與規模龐大的遊戲開發需求(策劃文稿),越來越多的開發人員就更加重視與強調優良開發架構的使用,以期進一步增強遊戲開發效率與代碼品質!

   本篇就基于Unity遊戲引擎UGUI為基礎,對UI界面遊戲架構做一些有益探索與研究。首先我們來研究一下大型遊戲項目中,沒有UI架構容易導緻與出現的問題:

問題1;

   以ARPG為例,多個場景會反複出現相同的“UI窗體”,造成多個場景中反複加載相同的UI窗體。

解決思路:

    “UI架構” 需要緩存項目(例遊戲項目)中常用的“UI窗體"。

問題2:

  開發商業複雜項目時,各個UI(UI腳本)之間傳值,容易出現“緊耦合”的情況,容易導緻項目的“可複用性”降低。

解決思路:

    各個UI的生成、銷毀、切換,都是通過架構(Manger)實作,各個UI之間不直接聯系(傳值),開發類似“消息傳遞中心”的機制來負責所有“UI窗體”或者UI腳本之間的傳值。

問題3:

  卡牌、RPG等遊戲類型項目,很多情況下會出現多個“彈出窗體” 疊加的現象,開發人員需要“手工”維護窗體中間的層級關系。

解決方案:

    設計UI架構系統,使用“棧”的資料結構,儲存與控制目前所有需要顯示的“UI窗體”的層級關系。

問題4:

  商業項目中多個“UI窗體” 疊加出現時,保持“UI窗體”的“模态顯示”非常重要(即: 彈出子視窗時,不允許玩家操作父窗體),否則容易出現各種誤操作。

解決方案:

   設計的架構本身,需要對目前顯示的窗體做“遮擋處理”,即:不允許使用者繞過目前“UI窗體”直接操作底層窗體,或者誤操作點選項目中的3D遊戲對象等。

  當然還有很多其他的問題,諸如:語言的國際化、“窗體預設”自動加載的管理等。但是設計UI架構一個總的核心原則是:盡量讓架構本身完成與具體業務無關的事務性工作,讓開發人員隻需要專注遊戲業務邏輯的開發本身即可。(這個原則同樣适用于其他架構的設計中)

  為了解決以上商業開發遇到的各種問題,是以筆者設計如下UI窗體架構的“功能設計圖”:

遊戲UI架構設計(一) : 架構設計理論篇

相應的類圖設計如下:

遊戲UI架構設計(一) : 架構設計理論篇

 為了更好的描述整個架構系統,筆者對整個架構分如下六個部分作較長的描述:

  1. 最簡版本設計
  2. 窗體的層級管理
  3. 模态窗體管理
  4. 配置管理與應用
  5. 消息傳遞中心
  6. 資源國際化技術

先寫到這裡,下篇來講解“遊戲UI架構設計(二):“最簡版本”設計篇

遊戲UI架構設計(一) : 架構設計理論篇