1.5 KiB
1.5 KiB
GameObject::Serialize
把当前对象的基础状态写成一行分号分隔的 token 流。
void Serialize(std::ostream& os) const;
行为说明
当前实现按固定顺序写出:
name=...;
tag=...;
active=...;
layer=...;
id=...;
uuid=...;
transform=...;
其中:
tag是真实对象 tag,而不是名字别名layer是当前对象 layertransform继续委托给TransformComponent::Serialize()
tests/Components/test_game_object.cpp 里的 Layer_GetSetAndSerializeRoundTrip 已验证这一行 token 流会保留 tag 和 layer 的 round-trip 结果。
当前边界
- 这里只写单个
GameObject的基础状态 - 不写普通组件列表
- 不写父子关系
- 不写所属场景
如果你要保存完整对象树,应使用 Scene::SerializeToString。
另外,这条紧凑 token 流当前不会像 Scene::SerializeToString() 那样对 name / tag 做换行和反斜杠转义;它更适合引擎内部受控 round-trip,而不是通用交换格式。
参数
os- 输出流。
返回值
- 无。
设计提示
把“单对象基础状态”和“完整场景树”拆成两层序列化接口,是商业引擎里常见的职责分离方式:
GameObject::Serialize()负责描述“我自己是谁”Scene::SerializeToString()负责描述“整棵树如何保存”