遊戲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窗體架構的“功能設計圖”:
相應的類圖設計如下:
為了更好的描述整個框架系統,筆者對整個框架分如下六個部分作詳細描述:
- 最簡版本設計
- 窗體的層級管理
- 模態窗體管理
- 配置管理與應用
- 訊息傳遞中心
- 資源國際化技術