项目 github地址
打开项目选GameLauncher场景,直接启动游戏。我用的是 Unity 2021.3.6f1 版本。但应该是2017之后的都支持,没有实测过。
参考
老规矩,先看上面这篇文章,掌握大致的原理。
简单总结一下
- UIGroup做UI的层级管理。
- UIFormLogic 管理UI的生命周期。
- UGuiFormLogic 是 UIFormLogic 的Ugui实现。
代码实现上,XXXFormLogic继承UGuiFormLogic,实现自己的生命周期逻辑,然后把这个脚本挂载到UI组件上,最后在合适的地方,用 UIComponent 打开和关闭这个UI界面。
二次封装做了什么
- 对UIComponent封装到UIMgr,按需露业务层使用到的接口。
- 重构了代码,让代码更内聚一点,方便扩展和使用。
目录结构-框架基础
-
CommonButton,封装的按钮,需要点击事件的地方,把这个按钮挂载到对应的预制件,然后绑定对应的事件就可以了。
-
UGuiFormLogic,UIFormLogic 的Ugui实现,要实现比方Ngui的话,就照着实现就好了,业务层,具体某个特定UI的FormLogic统一继承 UGuiFormLogic,实现对应的生命周期。
-
UGuiGroupHelper,界面辅助类,主要是深度控制和一些必要UI组件的绑定,需要在框架的UI组件节点进行配置。
-
UIMgr,UI相关的初始化,和必须暴露的UIComponent的接口,业务层主要调用这个管理类。
-
UIUtils,一些帮助类。
目录结构-业务实现和扩展
使用
- 节点配置
- UI_Root 其实是Canvas,加载的UI prefab都会加载到这个节点下面。
- 规划好UI层级,UI Group,并设置好。
- 配置好 UGuiGroupHelper。
- 继承UGuiFormLogic,实现自己的生命周期逻辑,并挂载到对应的预制体上。
3.加入配置表
- 加入枚举类UIFormId.cs
- 业务层调用UIMgr打开和关闭界面