复现办法:
ProjectSetting 中 Generaate optimized Blueprint componment data 设置为 All Blueprints.
自定义一个Componment,增加一个属性 TMap<int, FTEST_STRUCT> TestMap;
<br/>
struct 定义 :
====================================
USTRUCT(BlueprintType)
struct FTEST_STRUCT
{
GENERATED_BODY()
<br/>
UPROPERTY(EditAnywhere)
float testValue = 1.0f;
};
====================================
<br/>
然后创建一个蓝图 parent 增加这个组件。在创建一个蓝图child继承parent,然后在child蓝图里更改这个组件的TMap属性。在Level Blueprint spawn child,这时获取到的FTEST_STRUCT中的 testValue 为1,并不是我修改的值。
TonyChen1
(TonyChen1)
October 16, 2025, 2:18pm
2
你好,这个组件是c++创建的不是蓝图创建的对吧,在child蓝图里更改这个组件的TMap属性应该是直接设置TMap里对应index里的FTEST_STRUCT的testValue值对吧,我本地用4.27测试了下倒是正常的,4.26由于版本过于旧有些信息也找不到了。
是蓝图里创建的,在父类蓝图里创建的。改属性就是直接改test_value值,我们是在 4.26.2 官方引擎上复现的。
我们刚才在4.27上也没复现出来,怀疑这个问题在那个补丁上修复了,不知道你这边能查到是哪个patch么?
TonyChen1
(TonyChen1)
October 17, 2025, 9:59am
5
由于引擎版本比较多,我本地没有4.26版本的引擎帮你测试,我看4.27修复了一个类似问题可能是同一个,对于很老版本的引擎问题官方后面也不打算继续提供支持,如果在高版本修复了您可以尝试自己对比下修复掉
Fixed missing struct-typed TSet and TMap default value overrides in a dynamically-instanced Blueprint-added component when “optimized Blueprint component instancing” is enabled for an Actor class in a cooked build.