在 Unreal Engine 中,NewObject
方法用于在运行时动态创建 UObject(Unreal Object)实例。其中的 Outer
参数表示新创建对象的外部(父对象)。这个参数有几个关键的作用:
-
内存管理:
Outer
参数帮助 Unreal Engine 进行内存管理。在 UE 中,UObject 通常按照层次结构进行管理,而Outer
参数表示新对象的父对象。当父对象销毁时,其子对象也会被销毁,这样可以简化内存管理。 -
命名空间和组织:
Outer
参数有助于将对象组织到层次结构中,从而更好地管理和组织游戏对象。例如,你可以将所有角色对象组织在一个外部对象下,以便更容易在代码中进行引用和查找。 -
编辑器中的可见性:
在 Unreal Editor 中,对象的Outer
关系在层次浏览器中可见,这有助于理解对象之间的关系。通过Outer
参数,可以更容易地在编辑器中定位和管理对象。
以下是一个简单的示例,演示了如何使用 NewObject
创建一个具有父子关系的对象:
// 在 MyParentClass.h 中定义父类
UCLASS()
class YOURPROJECT_API UMyParentClass : public UObject
{
GENERATED_BODY()
};
// 在某个地方的代码中使用 NewObject 创建子类的实例,并将父类作为 Outer 参数传递
UMyParentClass* ParentObject = NewObject<UMyParentClass>(this);
// 在 MyChildClass.h 中定义子类
UCLASS()
class YOURPROJECT_API UMyChildClass : public UObject
{
GENERATED_BODY()
};
// 在某个地方的代码中使用 NewObject 创建子类的实例,并将父类作为 Outer 参数传递
UMyChildClass* ChildObject = NewObject<UMyChildClass>(ParentObject);
在这个例子中,UMyChildClass
的实例被创建,其父对象为 UMyParentClass
的实例。这样,在编辑器中查看对象层次结构时,你可以看到这两个对象之间的父子关系。