GameFramework——UI

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

前言

刚开始做游戏时,大家就说入行了都是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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值