Gameframework(UI初探篇)

1.UI常用接口

UIExtension类进行扩展接口的查阅,它是静态拓展UIComponent类,具体实现在StarForce工程中,可以CV到UnityGameframework中进行使用,具体接口表格如下: 

FadeToAlpha界面的透明度渐变的协程
SmoothValue

进度条的逐渐达到目标点的协程

HasUIForm是否存在此界面的id
GetUIForm获取挂载到此界面的UGuiForm
CloseUIForm把此界面的UGuiForm脚本作为参数关闭界面
OpenUIForm通过界面的枚举id去打开界面
OpenDialog打开自定义的提示界面
OpenNativeDialog打开原生态的提示界面

2.框架实现了什么?

首先我们生成一下GameForwork.Dll的ui模块的项目依赖图,发现UIManager是核心的类,UI模块启动会伴随着5大事件(关闭界面完成事件,打开界面失败事件,打开界面更新事件,界面打开成功事件,打开界面时加载依赖资源事件),关系依赖图如下:

可以看到UIManager里面一个字典是用来保存已经加载的视图资源,打开界面时会从对象池里面获取到资源,如果获取不到将实例化这个资源然后保存到对象池里,然后对用数据结构进行界面资源信息的增删改查更新,这个脚本主要是提供给使用框架的我们重要的接口,UIForm脚本是打开界面的时候会实例化界面信息然后挂载到界面上的,底层框架的UIManager将需要使用此脚本的函数,这个脚本与我们使用框架的人没有任何关系,此脚本上还有那个界面组的UIGroup类,当然这些东西是UIManager调用,我们调用UIManager的函数就可以了。

UGuiGroupHelper是界面组辅助器,就是控制界面组的一些API,目前只有深度的控制的函数。

DefaultUIFormHelper是界面辅助器,就是控制界面的一些API,比如界面的创建和释放等等。

UIComponent是实际挂载到物体上并且来控制界面的,主要是对UIManager的一层封装,调整参数对这个模块可能进行裁剪,比如是否需要打开界面成功的事件,实例化界面资源的优先级,界面组初始化的个数等。UIComponent在Start的时候主要是对UIManager进行初始化,一般开发的使用我们的界面组可以定义4个叫NormalGroup(基本界面组),PopupGroup(弹窗界面组),HintGroup(提示界面组),ToppestGroup(最高深度组),如图所示:

3.UI框架使用时遇到的问题

首次把工程下载好时点击按钮根本没有反应,于是查看到使用自定义CommonButton类去代替unity提供的Button组件,主要是继承了IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler这些接口来模拟Button,但是点击没有触发OnPointerDown函数,经过一段时间测试,发现了那些界面预制体下的Canvas组件和它们的父级UI Group - Default的Canvas组件可能没有关联起来,如图所示:

为什么呢?因为把MenForm直接拖动到UI下,然后再拖动回去,发现按钮可以触发。不知道是我一个人遇到了这个问题,也不太清楚是不是这个原因导致的问题,准备在GameForwork(UI模块进阶篇)解决这个问题。目前个人想法就是子级的Canvas与它的父级Canvas没有关联起来(有待考证)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值