前言
刚开始做游戏时,大家就说入行了都是UI仔,证明了UI的重要性,导致我对UI框架一直有一种畏惧的心理。
这次就从GF的UI加载来简单看看GF的UI框架以及它的使用
在这里给大家推荐我们群主写的GF解析,写的非常好
传送门
打开UI界面
第一视角分析,找到ProcedureMenu.cs
首先订阅一个UI成功打开的事件,接下来就是一个OpenUIForm函数

我们继续往上,还需要往上。此处int?代表可空类型,如果没有赋值会返回null而不是0

此处我们通过读取配置表,并且加上前置路径,继续往上看


此处是UI组件调用UIManager.OpenUIForm方法

UIManager属于逻辑层也就是GF层面的了,我们继续看源码。此处的逻辑是从对象池获取UI实例,如果对象池中没有
就先在 m_UIFormsBeingLoaded字典中记录,这个字典记录的应该是正在加载的UIForm,然后通过ResourceManager来异步加载对应资源,我们在LoadAsset时还传入了加载成功时的回调方法
此回调的逻辑是从m_UIFormsBeingLoaded移除该UI的id

再通过UIFormInstanceObject.Create()创建出对应UI实例,通过对象池进行注册,最后调用InternalOpenUIForm方法
如果一开始对象池没有记录,就直接调用InternalOpenUIForm方法
/// <summary>
/// 打开界面。
/// </summary>
/// <param name="uiFormAssetName">界面资源名称。</param>
/// <param name="uiGroupName">界面组名称。</param>
/// <param name="priority">加载界面资源的优先级。</param>
/// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面。</param>
/// <param name="userData">用户自定义数据。</param>
/// <returns>界面的序列编号。</returns>
public int OpenUIForm(string uiFormAssetName, string uiGroupName, i

本文解析了游戏框架GF的UI架构,介绍了UI加载流程,包括如何打开和关闭UI界面,以及UI架构的设计细节。
最低0.47元/天 解锁文章
6401

被折叠的 条评论
为什么被折叠?



