UE_C++ —— UObject Instance Creation

UE4中UObject实例创建与对象处理

目录

一,UObject Instance Creation

NewObject

NewNamedObject

ConstructObject

Object Flags

二,Unreal Object Handling

Automatic Property Initialization

Automatic Updating of References

Serialization

Updating of Property Values

Editor Integration

Run-Time Type Information and Casting

Garbage Collection

Network Replication


一,UObject Instance Creation

        创建对象新实例的方法;

NewObject

        NewObject() 是最简单的UObject工厂方法;它接受一个可选的外部对象和类,并用自动生成的名称创建一个新实例;

template< class T >
T* NewObject
(
    UObject* Outer = (UObject*)GetTransientPackage(),
    UClass* Class = T::StaticClass()
)
  • Outer,可选,一个待创建对象的外部 UObject
  • Class,可选,一个待创建对象类的 UClass
  • 返回值,指向生成实例(指定类)指针;
NewNamedObject

        NewNamedObject() 是在 NewObject() 上扩展,通过为新实例指定一个名称、对象标记、一个要指定为参数的模板对象;

template< class TClass >
TClass* NewNamedObject
(
    UObject* Outer,
    FName Name,
    EObjectFlags Flags = RF_NoFlags,
    UObject const* Template = NULL
)
  • Outer,一个待创建对象的外部 UObject
  • Name,一个为新对象的 名称 的 FName
  • Flags,可选,描述新对象的 FObjectFlags 枚举值;
  • Template,可选,创建新对象时用作模板的 UObject
  • 返回值,指向生成实例(指定类)指针;
ConstructObject

        为获得完全的灵活性,可以使用 ConstructObject() 函数来创建 UObjects 的新实例;此函数调用 StaticConstructObject() ,它分配对象,执行 ClassConstructor ,并执行任何初始化,如加载配置属性,加载本地化属性和实例化组件;

template< class T >
T* ConstructObject
(
	UClass* Class,
	UObject* Outer = (UObject*)GetTransientPackage(),
	FName Name = NAME_None,
	EObjectFlags SetFlags = RF_NoFlags,
	UObject const* Template = NULL,
	bool bCopyTransientsFromClassDefaults = false,
	struct FObjectInstancingGraph* InstanceGraph = NULL
)
  • Class,一个待创建对象类的 UClass
  • Outer,可选,一个待创建对象的外部 UObject
  • Name,可选,一个为新对象的 名称 的 FName
  • SetFlags,可选,描述新对象的 FObjectFlags 枚举值;
  • Template,可选,创建新对象时用作模板的 UObject
  • bCopyTransientsFromClassDefaults,可选,
  • FObjectInstancingGraph,可选,一个 布尔值 ,决定是否从类默认对象(而不是传入的原型指针)复制瞬态属性;如果 true ,使用类默认对象的瞬态;
  • 返回值,指向生成实例(指定类)指针;
Object Flags

        EObjectFlags 枚举用于快速而简洁地描述对象;有各种的标志来描述对象的类型、垃圾收集如何处理它、对象在其生命周期中所处的阶段等等;还有特殊的全掩码或无掩码和预定义的标记组;

Object Type
Flag Value Description
RF_Public 0x00000001 对象在包含它的包外部是可见的;
RF_Standalone 0x00000002 即使没有被任何东西引用,对象也会被保留以供编辑;
RF_Native 0x00000004 对象是本地对象,仅用于 UClass 对象;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值