UE UMG控件有些反常识问题 构造事件

我今天发现一个问题

UE的UMG控件的构造事件似乎和我以前理解和c++构造函数概念不一样

我以前理解的是  创建对象时就开始调用构造事件了 和 C++上面的构造函数 一样的用法

我们先创建一个地图 一个玩家控制器 一个游戏模式  三个UMG控件蓝图类

然后看看三个UMG蓝图类

text 顶层父类 需要里面的一个事件

我们主要是这个 setPr的事件  这个事件是拿来给子类实现的

tetxcld

看在这个重写了SetPr事件 注意下面的父类继承

main

这里我们镶嵌了 tetxcld

一样重写了SetPr事件 注意下方继承

行了看完了  我们来梳理一下继承树

NewPlayeController

给地图上模式

场景中放了个摄像机并设置了玩家0启动

行了 现在我们看

这个节点

创建控件  运行完这里我们就已经创建了一个main UMG蓝图的实例对象了

由于main里面又镶嵌了一个 tetxcld  所以我们实例了两个对象

main的实例对象 里面 包含了一个 tetxcld的实例对象

按原来的想法我们创建对象时就要调用构造事件了

现在我们断点试试

现在点击小三角运行

我们发现并没有触发构造事件的断点

现在我们连上添加到视口节点运行

我们发现进入刹车点了 触发断点了 一下是触发顺序  早到 晚

注意左上角的激活的窗口

我们发现 调用添加到视口函数 才开始调用构造事件 而且并没有去触发过他们的父类

text 蓝图里面的构造事件  这和c++有点不同

c++是 先父母  后客人  再自己 的顺序调用构造函数的  析构函数调用顺序是反过来的

当执行流认知错误 这就会导致有些问题

比如

这里我们在创建这个UI对象时调用了SetPr事件 

想要 去将进度条 滑动到50%且滑动颜色是粉红的

效果

现在我加了个东西

我们在这个构造事件里添加了   滑动条为蓝色且为80%

效果

我们发现我们的滑动条使用了构造事件里面的设定了

为什么会如此 这就是执行流的问题 

在此处断点  以下我发的图片是执行流的路线

我们发现执行了SetPr以后  又执行了构造事件 所以发生了执行流的错误认知 导致的bug

总结

UMG构造事件  不是创建对象时触发的(调用创建控件节点) 

而是 调用 添加到视口节点 触发的

触发时的构造事件顺序

客人预构造 -》 客人构造 -》自己预构造 -》自己构造

父母并没有进行构造事件的触发

UE:触发构造时的顺序  

无父母 先客人 后自己

C++:构造函数的顺序

先父母 后客人 再自己

有错误  请大佬指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值