docs: sync gameobject tag layer docs
This commit is contained in:
@@ -1,31 +1,61 @@
|
||||
# GameObject::Serialize
|
||||
|
||||
公开方法,详见头文件声明。
|
||||
把当前对象的基础状态写成一行分号分隔的 token 流。
|
||||
|
||||
```cpp
|
||||
void Serialize(std::ostream& os) const;
|
||||
```
|
||||
|
||||
该方法声明于 `XCEngine/Components/GameObject.h`,当前页面用于固定 `GameObject` 类目录下的方法级 canonical 路径。
|
||||
## 行为说明
|
||||
|
||||
**参数:**
|
||||
- `os` - 参数语义详见头文件声明。
|
||||
当前实现按固定顺序写出:
|
||||
|
||||
**返回:** `void` - 无返回值。
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Components/GameObject.h>
|
||||
|
||||
void Example() {
|
||||
XCEngine::Components::GameObject object;
|
||||
// 根据上下文补齐参数后调用 GameObject::Serialize(...)。
|
||||
(void)object;
|
||||
}
|
||||
```text
|
||||
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](../../Scene/Scene/SerializeToString.md)。
|
||||
|
||||
另外,这条紧凑 token 流当前不会像 `Scene::SerializeToString()` 那样对 `name` / `tag` 做换行和反斜杠转义;它更适合引擎内部受控 round-trip,而不是通用交换格式。
|
||||
|
||||
## 参数
|
||||
|
||||
- `os` - 输出流。
|
||||
|
||||
## 返回值
|
||||
|
||||
- 无。
|
||||
|
||||
## 设计提示
|
||||
|
||||
把“单对象基础状态”和“完整场景树”拆成两层序列化接口,是商业引擎里常见的职责分离方式:
|
||||
|
||||
- `GameObject::Serialize()` 负责描述“我自己是谁”
|
||||
- `Scene::SerializeToString()` 负责描述“整棵树如何保存”
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [返回类总览](GameObject.md)
|
||||
- [返回模块目录](../Components.md)
|
||||
- [GameObject](GameObject.md)
|
||||
- [Deserialize](Deserialize.md)
|
||||
- [Scene::SerializeToString](../../Scene/Scene/SerializeToString.md)
|
||||
|
||||
Reference in New Issue
Block a user