GameFramework框架——UIComponent

目录

制作一个UI过程和UI相关说明


制作一个UI过程和UI相关说明

1、准备一个唯一ID   例如 : int CommonTipForm = 103;

2、在UIForm.txt添加一行,注意分隔符是Tab键

#    Id        AssetName    UIGroupName    AllowMultiInstance    PauseCoveredUIForm
#    界面编号    策划备注    资源名称    界面组名称    是否允许多个界面实例    是否暂停被其覆盖的界面
    103 提示    UICommonTipForm Default TRUE    TRUE

① 关于PauseCoveredUIForm参数的说明:
意思是这个UI是否会暂停【被它所覆盖的[同一界面组]的界面】,上面TRUE就意味着它会覆盖掉所有它下面的UI。(先进后出-栈形式)
它下面的UI都会调用一些如:OnPause和OnCover方法  相反过来对应的有OnResume和OnReveal方法。

在UIFormLogic里 OnPause  会将物体隐藏, OnResume会将物体显示 ,调用的是gameObject.SetActive()方法,
所以需要特别注意的是,如果你在UI中启动了协程,途中有一个UI,覆盖了你那个启动协程的UI,那么会因OnPause隐藏物体,而导致协程终止引发问题.
解决方法:重写OnPause方法,不让它隐藏物体即可。(这是我的解决方法,暂时性的)

如上例子的UI则会暂停掉 Default界面组下 被它所覆盖的界面,它会遍历一下同一界面组的被覆盖的界面,检出出那些还没被Pause和Cover的界面,
调用它的OnPause和OnCover方法,已经处于Pause和Cover状态的就不会再调用了。

② 关于AssetName参数的说明: UI预制体名称

3、创建一个脚本,UICommonTipForm  继承 UGuiForm 挂载到UI预制体根节点上。

4、调用方法打开UI:

int serialId = GameEntry.UI.OpenUIForm(UIFormId.CommonTipForm, "哈哈哈哈"); 

5、调用方法关闭UI:
在UI内部关闭UI的方法可以使用如下:

this.Close(bool);  //其中bool参数为true时会进行回收到对象池内,否则只是简单的做了个渐隐和隐藏物体并没有回收的。

内外均可的关闭方法:

GameEntry.UI.OpenUIForm(UIGuiForm对象);  //内部可以直接用this..   
GameEntry.UI.OpenUIForm(int);  // int参数是 serialId,它是在你OpenUIForm时返回的一个int返回值。 

这些方法都还有很多可选参数,例如传个userdata回去给OnClose使用啥的。

6、UI是有使用到对象池的,可以在UIComponent挂载的UI物体上看公开参数设置 对象池最大容量(Instance Capacity)和自动清理间隔时间 (Instance Auto Release Interval)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值