而Component 在SimpleConstructionScript中,以 SCS_Node 类型存储,Component树状结构,对应一个节点树,我们可以通过SimpleConstrcutionScript拿到上面的全部节点,再通过 GetActualComponentTemplate 拿到实际的 component 模板(类似CDO概念),之后在 ComponentTemplate上的 修改,便可以被序列化到蓝图资产上。 SCSNode结构,包含一个...
GetClass和GetStaticClass都明白了之后,理解ClassDefaultObject就简单多了。ClassDefaultObject(简称CDO),类默认对象。通过CDO我可以拿到一个UObject初始化时的值。虽然CDO有个Default默认,但是用默认去描述它的功能不是很准确。回到我们创建的类MyActor,给它添加一个外部可以修改变量testIntValue,默认值1: 对于两个蓝图...
在引擎的PreInit阶段中,会去加载项目中的Module,然后对项目中Module包含的UObject都创建一个CDO对象 /** * Get the default object from the class * @param bCreateIfNeeded if true (default) then the CDO is created if it is null * @return the CDO for this class */UObject*GetDefaultObject(bool...
GetClass()的局限在于需要UObject实例,这时StaticClass就派上用场了,它允许我们在没有实例的情况下获取特定类的UClass。通过StaticClass,我们可以确定类的继承关系,例如,判断MyActor是否是UObject的子类。ClassDefaultObject(CDO)是理解最后一个概念的关键。它代表了一个UObject初始化时的默认状态。例如...
设计为通过变量进行配置 技能任务UAbilityTask 他们在游戏性技能执行过程中执行异步工作,并通过调用委托(Delegate)或一个或多个输出执行引脚来影响执行流。 关于Spec 对于GamePlayAbility、GamePlayEffect在引擎中存在三个对象,CDO、Spec、Handle。
虚幻引擎序列化每个继承自 CLass 的类的默认值(即序列化CDO),然后序列化对象与类默认对象的差异。这样就节约了大量的子类对象序列化后的存储空间。通过UPackage保存UObject1 创建资源包:UPackage* Package = CreatePackage(*AssetPath);2 对象创建时,关联包 NewObject<UTestObject>(Package, FName(*ObjectName),...
CDO 是我们的类在其默认状态下的记录,它用作进一步继承的原型。因此,如果我们定义了自定义 Actor 类型、自定义 Game Mode 或任何在其前面使用 UCLASS 声明的内容; 引擎循环分配该类的默认实例,然后运行其构造函数,将父类的 CDO 作为模板传入。这就是构造函数不应该包含任何与游戏相关的代码的原因之一:它实际上...
```cpp/** 文件名:MyConfigDeveloperSetting.ini 位置:项目目录/Saved/Config/WindowsEditor 继承自UDeveloperSettings,所以可在项目设置中编辑 修改: 1.在项目设置中,手动改变值后,生成ini文件。 2.代码中的读取和修改:通过CDO读取和修改 UMyConfigDeveloperSetting* Config = GetMutableDefault<UMyConfigDeveloperSetti...
确定了思路后,首先要解决的问题是如何获取默认值,根据大钊老师在UObject中的解析,类在生成过程会构造CDO用于记录默认值(https://zhuanlan.zhihu.com/p/60291730),水曜日鸡在其文章《一文搞懂StaticClass、GetClass和ClassDefaultObject》(https://blog.csdn.net/j756915370/article/details/117913118)中提到了CDO的...
ObjClass = ThisObject->GetClass(); //UE5.4中还没有对使用impersonator时CDO的支持 DiffObject = ObjClass->GetDefaultObject(false); } /* 根据是否存在编辑时状态而进入不同分支, 编辑时需要序列化一些Debug数据 */ ObjClass->SerializeTaggedProperties(Slot...