序列化就是存储,反序列化就是读取。
序列化和反序列化都在函数void UObject::Serialize( FArchive& Ar )里。
跟踪反序列化代码,
1,获取当前类信息
2,获取Outer,即指定了当前UObject被作为哪一个对象的子对象进行序列化。
3,判断当前等待序列化的对象的类UClass的信息是否被载入,没有的话,则
(1)预载入当前的类信息。
(2)预载入当前类的默认对象CDO的信息
4,载入名字和Outer,以及当前对象的类信息,保存于ObjClass对象中,
5,载入对象的所有脚本成员变量信息,这一步必须在类信息加载后,否则无法根据类信息获得有哪些脚本成员变量需要加载。
(a)标记脚本数据序列化开始
(b)载入脚本定义的成员变量
(c)标记脚本数据序列化结束