if 组件是否存在_UE4 UMG简介+Slate组件问题排查

Slate 组件问题排查总结简介
首先是一个工作中遇到的BUG: 用slua添加子节点到父节点上的时候,第二次打开无法显示对应的子节点Widget。对应Lua代码如下

  1. local comboBox = ui_manager.ShowUI(ui_manager.UI_Config.ui_coupon_combobox,2,price,buyUIInfo.shopInfo.id)
  2. if comboBox then
  3. self:AttachChildWindow("ScaleBox_Coupon",comboBox)
  4. end


因为我们引入了UI对象的内存池概念,很自然而然的想到了缓存住的控件是不是释放有问题。检查slua的release代码之后发现没有任何问题。基于ScaleBox 只能有1个子物体这一个机制,在猜测BUG原因的时候,尝试用CanvasPanel替换ScaleBox组件。发现果然能解决这个问题。
但是也带来了2个新问题:
1、ScaleBox子物体在第一次关闭和第二次打开的时候经历了什么?
2、为什么CanvasPanel就可以而ScaleBox不可以?
为了解决以上疑问,开启我们的排查过程。
为了能使大家更好的了解这个流程,先对Slate组件创建销毁流程进行介绍。Slate组件创建销毁流程
1、将我们日常使用的一个组件,ScaleBox拆出来看(如下图):有如下的对应关系。里面包含了 UScaleBox,UScaleBoxSlot,SscaleBox

ae36ab3a246d680c42276be61523630b.png


2、创建过程

346a1e3ee589193772a961f8b153a775.png


3、销毁过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值