Unreal 与 Unity 中的序列化
Serialization in Unreal vs Unity
在 Unity 中,您必须告诉引擎要序列化的参数。
不仅如此,其中一些是不可序列化的(例如字典),您需要非常清楚和仔细地指定它。
我真的很困惑,因为在任何书籍或官方页面上几乎 没有文档 。连论坛里的问题都没有。似乎只是一个蓝图...但实际上并非如此。
当您保存(序列化)场景以及进入播放模式时,编辑器变量状态是否存储在场景中,我需要知道什么。
如何创建一个组件的实例,其 UPROPERTIES 值也在编辑器中设置,但使用来自其他文件的宏创建。这些是非常有活力的。那些也存储?
(我知道每次打开场景时都会执行构造函数。我只对这种情况感兴趣......不是通过代码创建实例,因为你可以硬编码设置这些值)
我正在 运行 测试,但希望能提供一些关于这一切的信息。也许 Unreal 存储了每一件东西,这就是为什么没有关于它的信息...
据我所知,关于 UE 序列化,标有 UPROPERTY
宏的变量受制于 CDO 机制(或至少标记为 EditDefaultsOnly、EditAnywhere 和允许您在编辑器中编辑它的值的类似属性)。 CDO 是 Class 默认对象 并且基本上它保存 UObjects 的初始数据。
这些属性的值可以在 C++ 或编辑器中设置,然后在实际 实例 或 derived 类(也意味着蓝图 类)。如果您不想存储 属性 的值,您可以使用 Transient
标志 (c++) 或复选框 (BP)。我经常将它用于在游戏过程中找到的缓存项目。
请注意,在 C++ 构造函数中,这些属性未正确初始化。并且在调用 PostInitProperties()
之前它们没有正确初始化,这是在 CDO 初始化之后。
我发现有关 Actor 生命周期的阅读很有用 UE Docs,它对我帮助很大。
在 Unity 中,您必须告诉引擎要序列化的参数。 不仅如此,其中一些是不可序列化的(例如字典),您需要非常清楚和仔细地指定它。
我真的很困惑,因为在任何书籍或官方页面上几乎 没有文档 。连论坛里的问题都没有。似乎只是一个蓝图...但实际上并非如此。
当您保存(序列化)场景以及进入播放模式时,编辑器变量状态是否存储在场景中,我需要知道什么。
如何创建一个组件的实例,其 UPROPERTIES 值也在编辑器中设置,但使用来自其他文件的宏创建。这些是非常有活力的。那些也存储? (我知道每次打开场景时都会执行构造函数。我只对这种情况感兴趣......不是通过代码创建实例,因为你可以硬编码设置这些值)
我正在 运行 测试,但希望能提供一些关于这一切的信息。也许 Unreal 存储了每一件东西,这就是为什么没有关于它的信息...
据我所知,关于 UE 序列化,标有 UPROPERTY
宏的变量受制于 CDO 机制(或至少标记为 EditDefaultsOnly、EditAnywhere 和允许您在编辑器中编辑它的值的类似属性)。 CDO 是 Class 默认对象 并且基本上它保存 UObjects 的初始数据。
这些属性的值可以在 C++ 或编辑器中设置,然后在实际 实例 或 derived 类(也意味着蓝图 类)。如果您不想存储 属性 的值,您可以使用 Transient
标志 (c++) 或复选框 (BP)。我经常将它用于在游戏过程中找到的缓存项目。
请注意,在 C++ 构造函数中,这些属性未正确初始化。并且在调用 PostInitProperties()
之前它们没有正确初始化,这是在 CDO 初始化之后。
我发现有关 Actor 生命周期的阅读很有用 UE Docs,它对我帮助很大。