文章为本人学习虚幻引擎时的笔记,未必会帮到你!
在学习虚幻引擎的序列化保存方式的时候,因为图方便,直接给场景里的Actor需要保存的组件属性添加了SaveGame声明

在调用加载的时候,也就是反序列化的时候,可以看到储存着保存的属性
但是随后我通过一些交互的方式获取到该Actor对象的时候,竟然发现这个对象的组件为空??
这里提供一个解决方案:那就是重写Actor的Serialize方法,因为如果Actor里的某个成员是个UObject,而这个UObject类里面还有一些无法被写入的属性的时候,最好要使用这种方式,然后在该方法里,对你的UObject里面的具体的某个对象进行序列化

取消对这个组件的SaveGame标记

在这个父类中有我需要保存的属性,是一个结构体数组
这里需要提醒下,如果是个结构体,还要将结构体里的每个成员都重载一遍序列化运算符
最后回到对Actor重写的Serialize方法中,对刚刚保存的组件中,组件内部父类的被标记SaveGame的数组进行序列化
然后在加载游戏的相关方法中,需要为Actor写入序列号的时候,如果其重写了Serialize函数,会运行到子类重写的函数上,也许是上面写的那样


这样就解决了Actor中的某些UObject无法被序列化的问题,其实就是详细地将UObject的真正需要保存的属性进行保存,如果出现无法保存的属性,例如结构体需要自行重载序列化运算符的话这时候直接保存UObject会造成写入时该Actor的UObject为空的现象!