游戏UI系统设计
1.需要實現的功能
- UI界面的管理(窗體加載、窗體顯示、窗體隱藏、窗體銷毀等)
- UI分層次(比如彈窗、廣播信息需要在上層)
- UI界面的出場、入場動畫
- UI界面的顯示效果(比如帶透明背景、帶高斯模糊背景等)
- UI可以動態更新
2.程序方面設計
- UI需要MVC分離
- UI與其它模塊交互信息需要低耦合
3.具體怎么做
可以知道的是,首先UI界面的設計需要采用MVC模式,將界面的顯示獨立出來,這一塊需要繼承MonoBehaviour,以便掛載到UIPrefab上。
View:
1.只做數據的展示,而不做數據的處理。
2.只接受controller的事件,對于其他外部的事件一概交由controller處理。
3.按鈕的響應回調,建議也放到controller里面去處理。
4.view的創建,也交到controller里面處理。
Controller:
1.接受外部的數據、事件并且做好處理,然后存入對應的數據層,同時通知view層做顯示。
2.controller與view之間的交互,最好采用事件通知,而不是直接的調用。
3.對于data層,可以在controller直接寫,也可以獨立出來。
?
上面說的MVC分離,針對的是單個的界面而言,比如排行榜界面,郵件界面等,那么整體的又該如何來管理呢?
?
UI界面的管理
對于UI界面管理,其實需要做這些事情:
1. 明確UI的層級,這個在最開始的時候就要設計好,按照功能來講,一般游戲都有的,最低層級的背景,然后是正常UI內容,然后是各種彈窗,然后最上層可能是系統通知一類,
那么假設現在有背景、正常UI內容、彈窗、系統通知,那么我們在做的時候就應該設定好這四層,并且每一層的層次都是依次遞增的,不然的話顯示就會不正確。
?
2. UI的資源加載,一般來說,是將一個個UI分模塊制作成為預制體,然后在需要用的時候,通過資源加載,然后將其實例化顯示,在這個過程中,我們按照上面提到的,那么應該先
創建每一個UI界面的Controller,然后在需要的時候,通過controller來顯示對應的View。但是在這個過程中,有些界面不是很常用,可能偶爾用一次,就不用了,那么這個時候就會
涉及到如何來管理這些加載進來的資源,對于這種不常用的窗體來說,顯示完后,就應該把他給銷毀了(節省內存),而對一些常用的,可能就需要保存引用,避免頻繁加載資源帶來的
IO問題。
UI顯示效果
?對于UI帶有特殊效果的,比如有進場、出場動畫,彈窗有黑色半透明背景,或者帶有高斯模糊背景的彈窗,這些效果應該如何處理。
通常的做法是給每一個UI進行分類,比如有出場動畫、入場動畫的是一類,沒有任何動畫的是一類,有背景的是一類,有高斯模糊的是一類,然后在寫所有UI類的父類的時候,在父類里面寫Enter,Exit等
狀態方法,在這些方法中調用一些對應的顯示方法,這些顯示方法則是根據UI分類不同而不同,這樣就統一做出了UI顯示效果,而不用每一個UI都去寫一遍,當然,可能某一個UI有不同的顯示動畫,這個
時候,可以覆寫父類的動畫方法,這樣就OK了。
UI與其它模塊交互
要降低耦合,那就使用事件通知,避免直接調用,一般來說這是個簡單但是卻非常有效的方法。
轉載于:https://www.cnblogs.com/leiGameDesigner/p/8650110.html
總結
- 上一篇: delphi dxBarManager
- 下一篇: java信息管理系统总结_java实现科