UGF学习4-UI
https://blog.csdn.net/m0_37920739/article/details/104089605
https://www.jianshu.com/p/b75718ac2f1f
UI组件结构
UI五大事件:
- 界面打开成功事件
OpenUIFormSuccessEventArgs
- 打开界面失败事件
OpenUIFormFailureEventArgs
- 打开界面时加载依赖资源事件
OpenUIFormDependencyAssetEventArgs
- 打开界面更新事件
OpenUIFormUpdateEventArgs
- 关闭界面完成事件
CloseUIFormCompleteEventArgs
UIManager:
里面一个字典是用来保存已经加载的视图资源,打开界面时会从对象池里面获取到资源。
如果获取不到将实例化这个资源然后保存到对象池里,然后对用数据结构进行界面资源信息的增删改查更新。
这个脚本主要是提供给使用框架的我们重要的接口。
UIForm:
是打开界面的时候会实例化界面信息然后挂载到界面上的
底层框架的UIManager将需要使用此脚本的函数
这个脚本与我们使用框架的人没有任何关系
UIGroup:
由UIManager调用,我们调用UIManager的函数就可以了。
UGuiGroupHelper:
界面组辅助器,就是控制界面组的一些API,目前只有深度的控制的函数。
DefaultUIFormHelper:
界面辅助器,就是控制界面的一些API,比如界面的创建和释放等等。
UIComponent:
实际挂载到物体上并且来控制界面的,主要是对UIManager的一层封装,调整参数对这个模块可能进行裁剪。
比如是否需要打开界面成功的事件,实例化界面资源的优先级,界面组初始化的个数等。
UIComponent在Start的时候主要是对UIManager进行初始化。
一般开发的使用我们的界面组可以定义4个叫
- NormalGroup(基本界面组)
- PopupGroup(弹窗界面组)
- HintGroup(提示界面组)
- ToppestGroup(最高深度组)
生命周期
UI组件的使用
UIComponent的使用
UIComponent 是对 UIManger的封装,没有特殊需求时使用 UIComponent 即可。
常用方法:
AddUIGroup
增加界面组bool ADDUIGroup(string uiGroupName, int depth)
- uiGroupName:
界面组名称 - depth:
界面组层级(在哪个图层) - 返回是否成功增加界面组
- uiGroupName:
OpenUIForm
打开界面int OpenUIForm(string uiFormAssetName, string uiGroupName)
- uiFormAssetName:
界面名称 - uiGroupName:
界面组名称 - 返回打开的界面ID
- uiFormAssetName:
CloseUIForm
关闭界面void CloseUIForm(UIForm uiFrom)
- uiFrom:
要关闭的界面对象
- uiFrom:
RefocusUIForm
激活界面void RefocusUIForm(UIForm uiForm)
void RefocusUIForm(UIForm uiForm, object userData)
- userData:
用户自定义数据
- userData:
UI打开时是异步的
更多AIP见
https://gameframework.cn/api/class_unity_game_framework_1_1_runtime_1_1_u_i_component.html
UIGroup的使用
UIGroup 实际上是将同一Layer层级(图层)上的UI界面打包成一组(可以理解为深度)。
一般情况下可以将一个游戏的UI界面分为以下几个层级
- Background层
最底层UI - Scene层
- Normal层
用户点开的多级UI - Info层
广播,消息弹窗 - Tip层
错误提示 - Top层
UIForm的使用
每个独立的UI界面就是一个UIForm对象。
它应该只是窗口,相关的逻辑内容应该写在UIFormLogic中。
以下方法都可以重写在继承了UIFormLogic的UI逻辑类中
自定义UIForm的方法:
常用方法:
界面初始化
void OnInit(object userData)
界面打开
void OnOpen(object userData)
界面关闭
void OnClose(bool isShutdown, object userData)
界面暂停
界面暂停恢复
界面遮挡
界面遮挡恢复
界面激活
界面轮询
界面深度改变(更改所在层级)
UI组件拓展接口
UIExtension类进行扩展接口的查阅,它是静态拓展UIComponent类,具体实现在StarForce工程中,可以CV到UnityGameframework中进行使用,具体接口表格如下:
接口名称 | 作用 |
---|---|
FadeToAlpha | 界面的透明度渐变的协程 |
SmoothValue | 进度条的逐渐达到目标点的协程 |
HasUIForm | 是否存在此界面的id |
GetUIForm | 获取挂载到此界面的UGuiForm |
CloseUIForm | 把此界面的UGuiForm脚本作为参数关闭界面 |
OpenUIForm | 通过界面的枚举id去打开界面 |
OpenDialog | 打开自定义的提示界面 |
OpenNativeDialog | 打开原生态的提示界面 |