GameFramework篇:StarForce加载UI讲解(上)

准备工作:

  1. 了解C#委托和事件

这篇博客就以初学者角度来讲讲GF加载UI的方式,因为卸载UI的方式相对简单,就留给大家自己看了。

来到ProcedureMenu流程,因为这里有UI

GameFramework篇:StarForce加载UI讲解(上)_第1张图片       

OnEnter函数做了两件事,订阅打开UI成功事件,并设置回调函数,意思是当UI实例化成功时,调用OnOpenUIFormSuccess函数 。

好了,这时候我们先不管别的,先把这句的原理搞清楚

GameFramework篇:StarForce加载UI讲解(上)_第2张图片            

id传入的是OpenUIFormSuccessEventArgs哈希值(所以是唯一的)

我们继续往里看

GameFramework篇:StarForce加载UI讲解(上)_第3张图片

当我们看到这里的时候,已经有些眉目了,GF内部将一类事件函数按规定的事件ID分类,这里就是很好的例子,以OpenUIFormSuccessEventArgs(打开UI成功事件)为一类,添加OnOpenUIFormSuccess这一事件参数。

还没完,我们继续,添加了事件,我们怎么确保加载成功后才执行呢?

回到ProcedureMenu流程,我们把注意力放在这句上(因为除了这句找不到其他和这一块有关系的了)

如果 不存在UI实例,则通过AB加载方式加载,然后调用回调函数

GameFramework篇:StarForce加载UI讲解(上)_第4张图片

到这里先暂停一下 ,先理解m_loadAssetCallbacks是个啥

GameFramework篇:StarForce加载UI讲解(上)_第5张图片

是封装了加载资源回调函数的一个函数集,他封装的这些都来自UIManager里面的

GameFramework篇:StarForce加载UI讲解(上)_第6张图片

 继续回到LoadAsset函数

GameFramework篇:StarForce加载UI讲解(上)_第7张图片

GameFramework篇:StarForce加载UI讲解(上)_第8张图片

到最后,加载好还是回到了InternalOpenUIForm

GameFramework篇:StarForce加载UI讲解(上)_第9张图片

所以我们再看InternalOpenUIForm

GameFramework篇:StarForce加载UI讲解(上)_第10张图片

这又是个啥? 

在UIManager里

GameFramework篇:StarForce加载UI讲解(上)_第11张图片

查找引用,在UIComponent里,添加订阅

好了,看到这,已经快到和最开始的订阅结合的地方了,马上就要到重点了,下篇继续,先用一张UML图总结这篇博客的内容,其实也没啥,理解了委托和事件很容易

GameFramework篇:StarForce加载UI讲解(上)_第12张图片

 

你可能感兴趣的:(Unity相关,GameFramework)