FGUI+Laya Air 遊戲架構之stage分層架構

先提前說明,此架構是幼麟棋牌框架的作者@麒麟子大神教給筆者的,麒麟子大佬給了一套基於FGUI+Laya Air寫的棋牌大廳界面子工程學習,奎斯花了一段時間從代碼中學習並初步總結了出了分層遊戲架構的基本模式,因爲只是初步學習,還有一些其他模塊奎斯暫時沒有加(比如網絡模塊),下面奎斯分享出這套遊戲架構(這裏只介紹理論總結,不貼具體代碼)。

一、分層架構基本模式:

先UI分層架構圖:

在分層架構中,我們將UI拆分爲game、hub、popup、notice、alert、mask六大層次:

GAME:主要用於放置玩家可見的遊戲場景,比如遊戲預加載場景、大廳場景等等

HUB:一般就是漂浮在場景之上的按鈕 玩家信息欄之類的

POPUP:遊戲彈出層 比如遊戲結束界面等

NOTICE:一般就是鎖屏提示 比如網絡重連時候 提示 正在鏈接服務器。 或者加載界面的時候 提示一個loading

ALERT:是屬於一種特殊的彈出層,彈出確認提示框之類的

MASK:遮罩一般與彈出層配合sh,比如出現一個提示框的時候,除了提示框部分其他部分就要變暗,有一種淡入淡出的效果。

而上面每一層層次在zOrder上都是逐漸由低到高,一般我們會把每層用枚舉類型標識。

二、分層管理模式:

在分層架構中,採用一種Master-Scene-UI的管理方式。除了類似Alert這種比較通用的都放入Basic包體,一般我們會把每一個UI(包括GAME層)在FGUI中都做成一個單獨的包體

每個UI都會有一個Master組件、一個Scene組件、一個Page組件:

這三種組件都繼承自一個公共的父類master、scene、page,並分別由master_manager、scene_manager、ui_manager來管理,而這三類組件的關係是:

1.master_manager負責管理scene_manager

2.scene_manager管理ui_manager

3.ui_manager管理每層分層的具體顯示與刪除

所有配置信息寫入單獨的類中在初始化時統一傳入master_manager管理器,這裏奎斯直接貼出大廳子工程中的全局圖:

在UI顯示出來後,具體的遊戲業務邏輯我們都寫在每個UI的page組件中。

三、實例簡單演示:

奎斯在初步學習完之後,將分層架構用一個簡單的五子棋小遊戲實現了遍,這裏簡單演示下:

1.可以看到我們將包體分別各種UI(包括遊戲場景和懸浮於場景上的)和公共組件兩部分,下面顯示是大廳場景和遊戲場景的UI部分,我們通常會掛在GAME層。

2.Alert上面說過是一種特殊的彈出層,他與POPUP層不同在他是一種可以複用的提示框很多地方多次用到,而POPUP層是每一種UI都完全不同。

3.遊戲結束奎斯是做成了一個單獨的提示框UI放到POPUP層,在調用完Alert的UI後再調用結束UI,並在調用的時候使用遮罩,內容在代碼部分再改變,比如"遊戲結束,xx勝利了!"

讀者可以根據這種基本分層再按需求劃分UI,這是奎斯目前的分層架構的初步總結。

歡迎閱覽奎斯文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章