Bootstrap

UC++的NewObject方法中的Outer参数有什么用?

        在 Unreal Engine 中,NewObject 方法用于在运行时动态创建 UObject(Unreal Object)实例。其中的 Outer 参数表示新创建对象的外部(父对象)。这个参数有几个关键的作用:

  1. 内存管理:

            Outer 参数帮助 Unreal Engine 进行内存管理。在 UE 中,UObject 通常按照层次结构进行管理,而 Outer 参数表示新对象的父对象。当父对象销毁时,其子对象也会被销毁,这样可以简化内存管理。
  2. 命名空间和组织:

       Outer 参数有助于将对象组织到层次结构中,从而更好地管理和组织游戏对象。例如,你可以将所有角色对象组织在一个外部对象下,以便更容易在代码中进行引用和查找。
  3. 编辑器中的可见性:

            在 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 的实例。这样,在编辑器中查看对象层次结构时,你可以看到这两个对象之间的父子关系。