我有嵌套结构:
USTRUCT()
struct FActorProperties
{
GENERATED_BODY()
TMap<FName, FMyProperty*> ActorSlotMap;
FTransform Transform;
};
USTRUCT()
struct FSceneData
{
GENERATED_BODY()
TMap<int, FActorProperties> ActorPropertiesMap;
};
我正在为每个场景的新 FActorProperties 结构填充数据,并将其添加到 SceneData,如下所示:
FSceneData SceneData = FSceneData();
for(int i=0; i< SceneCount; i++)
{
FActorProperties ActorProperties;
// Derived struct of FMyProperty and the values for this are generated from a property list
FMyFloatProperty* FloatProp = GetStructPointerFromProperty<FMyFloatProperty>(Actor, StructProperty);
ActorProperties.ActorSlotMap.Add(StructProperty->GetFName(), FloatProp);
ScenesData.ActorPropertiesMap.Add(i, ActorProperties);
}
注意:我省略了获取 StructProperty 值的逻辑,基本上它是使用 actor 上的属性迭代器生成并查找特定属性。
当我调试这个 ActorProperties、
ActorProperties.ActorSlotMap[0]
和 ActorProperties.ActorSlotMap[1]
时,我看到正确的浮点值 0 和 5。
日志输出:
添加浮点值 0.000000
增加浮点数 5.000000
现在,如果我查询
ScenesData.ActorPropertiesMap[i].ActorSlotMap
中的所有条目,所有 FloatProp 值都相同
日志输出:
浮动值:5.000000
浮动值:5.000000
我是 Unreal c++ 菜鸟,所以也许我在这里没有看到明显的问题。我在这里做错了什么?