我有一个带有公开UPROPERTY
的C ++类,它通过蓝图类扩展。我使用蓝图来设置属性的值。
现在我要做的是从这个蓝图类中生成一个Actor,让我的C ++代码与蓝图中设置的属性一起工作。如果我从虚幻编辑器中将蓝图类的实例拖入世界,那么一切都很有效。但是,如果我从默认的GameMode
类动态生成同一蓝图类的这个actor,我可以看到该类的一个实例已被添加到世界中(我在World Outliner中看到它)但是当运行C ++代码时,从蓝图中设置的值不存在。
为什么以不同方式生成蓝图类(一种方法是通过从编辑器将其拖入世界,另一种方法是通过从GameMode类生成它)导致不同的结果?如果演员是从GameMode
班级产生的,为什么我无法访问蓝图数据?
答案 0 :(得分:1)
您确定要从GameMode生成派生的 Blueprint类的实例而不是父C ++类吗?
同时检查当您尝试访问成员变量时,您正在将实例强制转换为 Blueprint类而不是C ++类。
如果您还没有这样做,最好将_BP
或类似的内容附加到所有Blueprint派生类,以确保您始终知道您正在处理的是哪个版本。