GameFramework 开发脚手架之 UI框架

221 阅读2分钟

项目 github地址

打开项目选GameLauncher场景,直接启动游戏。我用的是 Unity 2021.3.6f1 版本。但应该是2017之后的都支持,没有实测过。

参考

GameFramework框架详解之 UI框架

老规矩,先看上面这篇文章,掌握大致的原理。

简单总结一下

  1. UIGroup做UI的层级管理。
  2. UIFormLogic 管理UI的生命周期。
  3. UGuiFormLogic 是 UIFormLogic 的Ugui实现。

代码实现上,XXXFormLogic继承UGuiFormLogic,实现自己的生命周期逻辑,然后把这个脚本挂载到UI组件上,最后在合适的地方,用 UIComponent 打开和关闭这个UI界面。

二次封装做了什么

  1. 对UIComponent封装到UIMgr,按需露业务层使用到的接口。
  2. 重构了代码,让代码更内聚一点,方便扩展和使用。

目录结构-框架基础

1698998947791.png

  1. CommonButton,封装的按钮,需要点击事件的地方,把这个按钮挂载到对应的预制件,然后绑定对应的事件就可以了。
    1698999207100.png

  2. UGuiFormLogic,UIFormLogic 的Ugui实现,要实现比方Ngui的话,就照着实现就好了,业务层,具体某个特定UI的FormLogic统一继承 UGuiFormLogic,实现对应的生命周期。

  3. UGuiGroupHelper,界面辅助类,主要是深度控制和一些必要UI组件的绑定,需要在框架的UI组件节点进行配置。

  4. UIMgr,UI相关的初始化,和必须暴露的UIComponent的接口,业务层主要调用这个管理类。

  5. UIUtils,一些帮助类。

目录结构-业务实现和扩展

1698999722973.png

使用

  1. 节点配置 1699000201864.png
  • UI_Root 其实是Canvas,加载的UI prefab都会加载到这个节点下面。
  • 规划好UI层级,UI Group,并设置好。
  • 配置好 UGuiGroupHelper。
  1. 继承UGuiFormLogic,实现自己的生命周期逻辑,并挂载到对应的预制体上。

1699000819954.png

3.加入配置表 1699000917654.png

image.png

  1. 加入枚举类UIFormId.cs
  2. 业务层调用UIMgr打开和关闭界面

1699001128976.png