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

1.5 KiB
Raw Blame History

GameObject::Deserialize

从一行分号分隔的 token 流恢复当前对象的基础状态。

void Deserialize(std::istream& is);

行为说明

当前实现会持续读取 token直到遇到

  • EOF
  • 换行
  • 回车

它能识别的 key 包括:

  • name
  • tag
  • active
  • layer
  • id
  • uuid
  • transform

未知 key 会被跳过,因此它对“多写了一些暂时不认识的字段”具备有限容错能力。

Tag 与 Layer 恢复语义

  • tag 最终走 SetTag,因此空字符串会回退到 "Untagged"
  • layer 最终走 SetLayer,因此上界仍会被限制到 31

按当前引擎自己生成的数据格式,这可以稳定 round-trip tag 与 0..31 范围内的 layer。

当前边界

  • 不会创建普通组件
  • 不会恢复父子关系
  • 不会设置所属 Scene
  • 不会触发 Awake()Start() 或创建事件
  • 只恢复这一个对象的基础状态

完整场景恢复应使用 Scene::DeserializeFromString

参数

  • is - 输入流。

返回值

  • 无。

设计提示

这个接口更像“对象基础状态的底层反序列化原语”,而不是面向最终用户的完整场景加载入口。商业引擎里把这类低层接口和场景容器级加载分开,是为了避免单对象 API 意外承担过多树结构与资源恢复责任。

相关文档