微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UE4 C++ SpawnParams.Template->GetOwner() 一直返回null

如何解决UE4 C++ SpawnParams.Template->GetOwner() 一直返回null

我使用的是 Unreal Engine 4.26 C++ 项目。 我正在尝试将 Actor FActorSpawnParameters 存储在 TMap 中,这将帮助我稍后在小部件中获取库存的哪个元素是我的 Actor,但是当存储在 TMap 内部并尝试访问它的元素的所有者时一直返回null。这是保存我们要添加到 TMap 的演员信息的代码

FActorSpawnParameters SpawnParams = FActorSpawnParameters();
Original->Setowner(this);
SpawnParams.Template = Original;
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Alwaysspawn;
auto ActorClass = Original->GetClass();
SpawnParams.Owner = this; SpawnParams.Instigator = this;
SpawnParams.Template->Setowner(this);
TSharedPtr InventoryTupleValue = MakeShared< FInventoryTupleKey>(1,SpawnParams); InventoryElements.Add(ActorClass,InventoryTupleValue);

到目前为止,Getowner() 将返回一个有效的所有者, [![在此处输入图像描述][1]][1] 然而,当尝试遍历地图时,似乎 Getowner() 返回 nullptr?这是为什么?这将始终返回“无所有者”日志消息。

for (auto keyvaluePair : InventoryElements)
     {
         if (keyvaluePair.Value->ActorSpawnParams.Template->Getowner())
         {
             UE_LOG(LogTemp,Warning,TEXT("# Class OWNER is %s"),*keyvaluePair.Value->ActorSpawnParams.Template->Getowner()->GetFName().ToString());
         }
         else
         {
             UE_LOG(LogTemp,TEXT("# no owner"));
             keyvaluePair.Value->ActorSpawnParams.Template->Setowner(this);
         }
             
     }

这是我在标题中使用的 Inventory TMap:

TMap< TSubclassOf<class ACollectable>,TSharedPtr<FInventoryTupleKey> > InventoryElements;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。