创建具有全局生存期的UObject 我有一个纯C++类,在这里我需要拥有ubObjor类型的属性。p> class A { private: UObject* SomeSpecialObject; };

创建具有全局生存期的UObject 我有一个纯C++类,在这里我需要拥有ubObjor类型的属性。p> class A { private: UObject* SomeSpecialObject; };,c++,unreal-engine4,C++,Unreal Engine4,如果我使用NewObject创建这样的属性,由于GC的原因,当我加载新的level/map时,我将得到悬空指针。我可以使用弱指针并检查对象是否仍然处于活动状态,但我需要这个对象和应用程序具有相同的生存期 如何创建具有如此全局生存期的UObject?我想这是一个不真实的引擎问题。 创建UObject后,可以调用其方法“AddToRoot()”。之后,GC将永远不会删除它 将对象添加到根集中。这可以防止对象及其所有子对象在垃圾收集期间被删除。我想这是一个不真实的引擎问题。 创建UObject后,可

如果我使用
NewObject
创建这样的属性,由于GC的原因,当我加载新的level/map时,我将得到悬空指针。我可以使用弱指针并检查对象是否仍然处于活动状态,但我需要这个对象和应用程序具有相同的生存期


如何创建具有如此全局生存期的UObject?

我想这是一个不真实的引擎问题。 创建UObject后,可以调用其方法“AddToRoot()”。之后,GC将永远不会删除它


将对象添加到根集中。这可以防止对象及其所有子对象在垃圾收集期间被删除。

我想这是一个不真实的引擎问题。 创建UObject后,可以调用其方法“AddToRoot()”。之后,GC将永远不会删除它


将对象添加到根集中。这可以防止在垃圾收集期间删除对象及其所有子对象。

这取决于对象是什么,您可以继承
UGameInstanceSubsystem
/*共享游戏实例生命周期的自动实例化和初始化系统*/
。还有一个
UEngineSubsystem
,它共享创建它的模块的生存期。@George在我的情况下,这会有点过分,所以
AddToRoot()
做了这个把戏。这取决于对象是什么,您可以继承UGameInstanceSubsystem
/*自动实例化和初始化的系统,这些系统共享游戏实例的生命周期*/
。还有一个
UEngineSubsystem
,它共享创建它的模块的生存期。@George在我的情况下,这会有点过分,所以
AddToRoot()
就这样做了。