首页 > 解决方案 > TMap 中的 UObject 指针

问题描述

我创建了一个包含各种 UObject 指针的映射,问题是这些指针最终由于垃圾收集而被删除。

我已经阅读了使用 AddToRoot 或使用 UPROPERTY 的解决方案。但是,我认为我不能使用 UProperty,因为正在创建的 UObject 是在函数中创建的,然后存储在 TMap 中。此外,我希望利用垃圾收集(所以 AddToRoot 没有用......)理想情况下,我可以以某种方式告诉这个新创建的对象不要删除/垃圾收集,直到它的父级(UClassOne)被删除......

这是该问题的简短示例...

UCLASS()
class SAMPLEGAME_API UClassOne  : public UObject 
{
   GENERATED_BODY()
public:
   void AddToMap()
   {
       // NewObj eventually garbage collects and future references to it in the TMap result in a crash...
       UObject* NewObj = NewObject<UObject>(this);
       MyObjects.Add(MyObjects.Num(), NewObj);
   }
   TMap<uint8, UObject*> MyObjects;
}

标签: c++unreal-engine4

解决方案


推荐阅读