2026-03-26 16:45:24 +08:00
|
|
|
|
# GameObject::Deserialize
|
|
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
从一行分号分隔的 token 流恢复当前对象的基础状态。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
void Deserialize(std::istream& is);
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
## 行为说明
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
当前实现会持续读取 token,直到遇到:
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
- `EOF`
|
|
|
|
|
|
- 换行
|
|
|
|
|
|
- 回车
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
它能识别的 key 包括:
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
- `name`
|
|
|
|
|
|
- `tag`
|
|
|
|
|
|
- `active`
|
|
|
|
|
|
- `layer`
|
|
|
|
|
|
- `id`
|
|
|
|
|
|
- `uuid`
|
|
|
|
|
|
- `transform`
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
未知 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 意外承担过多树结构与资源恢复责任。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
2026-04-03 15:48:09 +08:00
|
|
|
|
- [GameObject](GameObject.md)
|
|
|
|
|
|
- [Serialize](Serialize.md)
|
|
|
|
|
|
- [Scene::DeserializeFromString](../../Scene/Scene/DeserializeFromString.md)
|