Files
XCEngine/docs/api/XCEngine/Components/GameObject/Serialize.md

1.5 KiB
Raw Blame History

GameObject::Serialize

把当前对象的基础状态写成一行分号分隔的 token 流。

void Serialize(std::ostream& os) const;

行为说明

当前实现按固定顺序写出:

name=...;
tag=...;
active=...;
layer=...;
id=...;
uuid=...;
transform=...;

其中:

  • tag 是真实对象 tag而不是名字别名
  • layer 是当前对象 layer
  • transform 继续委托给 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() 负责描述“整棵树如何保存”

相关文档