9. UI和事件订阅

来菜单流程看看加载UI的逻辑

 

再这里主要是有两个步骤要做

1是订阅UI打开成功后的事件

2是打开UI逻辑

底层是由事件类型的hash码分类的方法

 

 

这不是一般的字典是是作者处理过的字典 值都是由链表构成的

 

如果没有要载入的ui则要更新要载入的ab资源,并调用回调函数。

 

看一下这个m_LoadAssetCallbacks回调函数

 

他由其余几个回调函数组成。

 

 

发现了载入资源成功的回调,看下在哪里用到。

 

在生成资源的准备阶段就能发现

 

这个方法进去就是调用载入资源成功调用方法。

会到之前函数的地方进入第2个入口

 

这个分支发现组合逻辑和数据的时候会调用UI打开成功事件

 

赋值的地方是UI组件上的这

 

 

fire函数跟进到到最后

 

发现这个队列和订阅底层的 事件处理字典都是定义在同一个事件池脚本里。

 

查下引用,在update函数里面。依次出列,处理事件。

 

这个就是处理事件的语句。

 

这个事件是从handler里面取出来的。也就是打开ui前订阅的打开ui成功时调用的函数。

所以说这个处理函数的参数是由 event 队列提供的 也就是uicomponent中fire抛出的方法,而调用参数的确是handler提供的也就是 订阅的回调方法。这其实已经设计到事件的范畴了。

 

例图(来自臣定保博客)

 

例图(来自烟雨博客)

另外有一点创建的ui实例

 

这上面有个 UIFromLogic 的字段就是这个ui的逻辑了

是不是很实体有些相似,UI毕竟也是实体。但是还是有所区别。

看下这个字段的赋值

 

在这个ui初始化的时候,在ui实例里直接获取当前ui的逻辑脚本

 

看看逻辑类的层次关系

 

游戏中普通UI窗口会放UI组件上,血条是放在自己定义的节点下。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值