子类修改父类变量后调用父类事件时变量读取异常是什么原因?
问题排查点
- 首先确认
interface event的调用对象是否正确:如果你调用事件时操作的是父类实例、父类类默认对象(CDO),而非实例化的子类对象,读取到的自然是父类的初始值。请确认你的调用逻辑指向的是子类的实例对象。 - 检查变量的声明规则:如果是C++开发场景,不要在子类中重新声明同名的
render element变量,否则父类事件访问的还是父类自身的成员变量。正确的操作是将该变量设为父类protected权限,子类直接修改继承到的变量值即可。 - 蓝图开发场景检查:确认你在子类
Class Defaults中修改的是继承自父类的render element变量,而非子类新增的同名变量;同时检查interface event的逻辑中是否错误读取了类默认对象的变量值,而非当前实例自身的变量值。 - 排查变量的赋值时机:如果父类的构造函数、
BeginPlay等生命周期函数中存在对render element的赋值逻辑,且执行时机晚于子类Class Defaults的赋值,会覆盖子类修改的值。请移除父类中多余的初始化赋值,或者调整赋值顺序。
内容的提问来源于stack exchange,提问作者Arxci
相关产品推荐
相关产品推荐

