Adding struct pointers to TMap gives different values from original struct

问题描述 投票:0回答:0

我有嵌套结构:

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++ 菜鸟,所以也许我在这里没有看到明显的问题。我在这里做错了什么?

c++ unreal-engine4
© www.soinside.com 2019 - 2024. All rights reserved.