查看: 852|回复: 13

[编程指南] 【UObject实例创建 | Unreal Engine】

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2016-6-27 01:06:23 | 显示全部楼层 |阅读模式


本页面的内容:

      
NewObject

NewNamedObject

ConstructObject

对象标识
     NewObject
NewObject()是最为简单的UObject工厂模式。它需要可选的外部对象和类,并会创建拥有自动生成的资源文件名称的新实例。

template class T T* NewObject(    UObject* Outer=(UObject*)GetTransientPackage(),    UClass* Class=T::StaticClass() )

参数
描述

外部可选。UObject作为被创建的 对象 的外部参数。类可选。UClass定义待创建的 对象 类。
返回值
指向指定类生成实例的指针。NewNamedObject
NewNamedObject()展开于NewObject(),通过对新实例,对象标识以及模板对象命名,从而被作为参数定义。

template class TClass TClass* NewNamedObject(    UObject* Outer,     FName Name,     EObjectFlags Flags = RF_NoFlags,     UObject const* Template=NULL)

参数
描述

外部UObject作为被创建的 对象 的外部参数。资源文件名称FName 作为新 对象 的 资源文件名称参数。标志可选。FObjectFlags枚举值描述新 对象 。Template可选的。UObject在创建新 对象 时被作为模板使用。
返回值
指向指定类生成实例的指针。ConstructObject
为达到完全的灵活性,UObjects的新实例可以通过ConstructObject()函数来进行创建。此函数调用分配 对象 的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 )

参数
描述

类UClass定义待创建的 对象 类。外部可选。UObject作为被创建的 对象 的外部参数。资源文件名称可选。FName 作为新 对象 的 资源文件名称参数。设置标识可选。EObjectFlags枚举值描述新 对象 。Template可选的。UObject在创建新 对象 时被作为模板使用。bCopyTransientsFromClassDefaults可选。布尔值决定是否从类默认对象而不是传入的原型指针处来复制临时属性。如此值为真,将使用类默认对象的临时值。FObjectInstancingGraph可选。FObjectInstancingGraph结构包含对实例化对象和组件到其模板的映射。在由新 对象 所拥有的组件进行实例化时使用。
返回值
指向指定类生成实例的指针。对象标识
EObjectFlags 枚举值用来快速并简洁地描述 对象 。对象 类型,垃圾回收如何处理该类型以及 对象 在其生命周期的哪个阶段等信息都有不同的标识进行描述。同时还有特殊的全局蒙版/无蒙版以及预定义的标识组。



标识

描述


对象类型
RF_Public0x00000001对象 在其其所包含的包外可见。RF_Standalone0x00000002尽管没有被任何函数引用, 对象 也被保存用来编辑。RF_Native0x00000004对象 为native类。这仅用于UClass对象。RF_Transactional0x00000008对象 为交互的。RF_ClassDefaultObject0x00000010对象 是其类的默认对象,例如,在被创建时该类使用的默认模板的新实例。RF_ArchetypeObject0x00000020对象 为其他对象的模板。它被作为类默认对象处理。RF_Transient0x00000040对象 没有被存储到硬盘上。
垃圾回收
RF_RootSet0x00000080即使没有被任何函数引用, 对象 也不会被垃圾回收。RF_IsLazyReferenced0x00000100对象 由缓慢的指针引用并且在删除时需要额外的清理。RF_Unreachable0x00000200该 对象 在对象图表上无法获得。RF_TagGarbageTemp0x00000400对象 由使用垃圾回收的不同工具标记来使用。此标识并不由垃圾回收器本身所定义。
对象生命周期
RF_NeedLoad0x00000800对象 需要载入。RF_AsyncLoading0x00001000对象 正被异步载入。RF_NeedPostLoad0x00002000对象 需要被滞后加载。RF_NeedPostLoadSubobjects0x00004000对象 仍需要实例化子对象并修复序列化的组件引用RF_PendingKill0x00008000对象 正等待销毁。将 对象 在游戏中标记为无效,但仍为有效 对象 。RF_BeginDestroyed0x00010000对象 已调用BeginDestroy()。RF_FinishDestroyed0x00020000对象 已调用 FinishDestroy()。
特殊蒙板
RF_AllFlags0x0003ffff对象 拥有所有标识。主要用来检查错误。RF_NoFlags0x00000000对象 没有标识。被用来防止转换。
预定义组
RF_Load
RF_Public | RF_Standalone | RF_Native | RF_Transactional | RF_ClassDefaultObject | RF_ArchetypeObject
标识被从虚幻文件中载入。RF_PropagateToSubobjects
RF_Public | RF_ArchetypeObject | RF_Transactional
由子对象从其超级对象继承的标识。
回复

使用道具 举报

0

主题

855

帖子

2823

积分

vip会员

Rank: 1

积分
2823
发表于 2016-7-2 19:38:55 | 显示全部楼层
不错,我喜欢这个,看看多少金币哦
回复 支持 反对

使用道具 举报

0

主题

843

帖子

2762

积分

vip会员

Rank: 1

积分
2762
发表于 2016-7-4 00:21:32 | 显示全部楼层
O(∩_∩)O哈哈~,谢谢分享哟
回复 支持 反对

使用道具 举报

0

主题

837

帖子

2739

积分

vip会员

Rank: 1

积分
2739
发表于 2016-7-4 11:33:14 来自手机 | 显示全部楼层
不错的资源啊
回复 支持 反对

使用道具 举报

0

主题

818

帖子

2719

积分

vip会员

Rank: 1

积分
2719
发表于 2016-7-9 12:22:33 来自手机 | 显示全部楼层
好东西这么多....
回复 支持 反对

使用道具 举报

0

主题

858

帖子

2820

积分

vip会员

Rank: 1

积分
2820
发表于 2016-7-14 08:43:23 | 显示全部楼层
啊啊啊啊,好多好多好多
回复 支持 反对

使用道具 举报

0

主题

853

帖子

2832

积分

vip会员

Rank: 1

积分
2832
发表于 2016-7-15 04:19:05 来自手机 | 显示全部楼层
不错的资源啊,可以研究研究
回复 支持 反对

使用道具 举报

0

主题

855

帖子

2848

积分

vip会员

Rank: 1

积分
2848
发表于 2016-7-17 05:47:25 来自手机 | 显示全部楼层
这个必须可以有
回复 支持 反对

使用道具 举报

0

主题

879

帖子

2911

积分

vip会员

Rank: 1

积分
2911
发表于 2016-7-19 21:38:46 来自手机 | 显示全部楼层
楼主好人!
回复 支持 反对

使用道具 举报

0

主题

911

帖子

3012

积分

vip会员

Rank: 1

积分
3012
发表于 2016-7-20 22:32:53 来自手机 | 显示全部楼层
这个必须可以有
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部