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

63 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GameObject::Deserialize
从一行分号分隔的 token 流恢复当前对象的基础状态。
```cpp
void Deserialize(std::istream& is);
```
## 行为说明
当前实现会持续读取 token直到遇到
- `EOF`
- 换行
- 回车
它能识别的 key 包括:
- `name`
- `tag`
- `active`
- `layer`
- `id`
- `uuid`
- `transform`
未知 key 会被跳过,因此它对“多写了一些暂时不认识的字段”具备有限容错能力。
## Tag 与 Layer 恢复语义
- `tag` 最终走 [SetTag](SetTag.md),因此空字符串会回退到 `"Untagged"`
- `layer` 最终走 [SetLayer](SetLayer.md),因此上界仍会被限制到 `31`
按当前引擎自己生成的数据格式,这可以稳定 round-trip tag 与 `0..31` 范围内的 layer。
## 当前边界
- 不会创建普通组件
- 不会恢复父子关系
- 不会设置所属 `Scene`
- 不会触发 `Awake()``Start()` 或创建事件
- 只恢复这一个对象的基础状态
完整场景恢复应使用 [Scene::DeserializeFromString](../../Scene/Scene/DeserializeFromString.md)。
## 参数
- `is` - 输入流。
## 返回值
- 无。
## 设计提示
这个接口更像“对象基础状态的底层反序列化原语”,而不是面向最终用户的完整场景加载入口。商业引擎里把这类低层接口和场景容器级加载分开,是为了避免单对象 API 意外承担过多树结构与资源恢复责任。
## 相关文档
- [GameObject](GameObject.md)
- [Serialize](Serialize.md)
- [Scene::DeserializeFromString](../../Scene/Scene/DeserializeFromString.md)