1.5 KiB
1.5 KiB
Scene::DeserializeFromString
从自定义场景文本重建当前场景内容。
void DeserializeFromString(const std::string& data);
行为说明
当前实现会先清空:
m_gameObjectsm_rootGameObjectsm_gameObjectIDs- 全局 registry 里属于旧场景的对象
随后分两阶段重建:
- 先解析所有对象块,收集
id、uuid、name、tag、active、layer、parent、transform和组件 payload - 再创建全部
GameObject,恢复基础字段、组件和父子关系
tag 与 layer 恢复语义
tag会通过GameObject::SetTag()写回,因此空字符串会回退到"Untagged"layer在解析阶段会先限制到31,再通过SetLayer()写回
因此按当前实现,场景 round-trip 会保留正常的 tag/layer 语义。
当前实现限制
- 旧对象清空时不会逐个调用 DestroyGameObject,因此不会触发销毁事件,也不会对组件调用
OnDestroy() - 新对象不会触发 OnGameObjectCreated,也不会调用
Awake()/Start() - 组件创建依赖
ComponentFactoryRegistry - 对损坏数字字段抛出的异常当前不会在这里捕获
- 如果父对象 ID 缺失或找不到,对象会回退为根对象
参数
data- 序列化后的场景文本。
返回值
- 无。