ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
SceneSerializer类 参考final

全场景序列化器 —— .scene 文件的事实标准(v2) 更多...

#include <SceneSerializer.h>

静态 Public 成员函数

static nlohmann::json toJson (Scene *scene, const std::vector< std::string > &excludeNames={})
 序列化整个场景(含层级)为 v2 JSON。被排除的对象(如编辑器相机)不落盘, 其子对象提升为根(parent=-1)。
static void fromJson (const nlohmann::json &doc, Scene *scene)
 把 JSON 追加实例化进目标场景(对象 + 组件 + 层级 + 相机兜底)。 调用方负责前置清场(如编辑器"打开"先删旧对象); 实例化失败仅跳过对应对象,不抛异常、不影响已加载部分。

详细描述

全场景序列化器 —— .scene 文件的事实标准(v2)

编辑器、Runtime、关卡切换共用同一格式与同一加载器: 编辑(toJson/fromJson)、运行(SceneManager::LoadSceneFromFile)。

.scene v2 格式:

{
"version": 2,
"objects": [
{ "name": "Play_Area", "parent": -1, "data": [ { "type": "...", "fields": {...} } ] },
{ "name": "Child", "parent": 0, "data": [ ... ] }
]
}
  • parent:父对象在 objects 数组中的下标,-1 表示根对象(保存时父先于子出现)
  • data:组件数组,复用 Prefab 的反射序列化(Prefab::Capture/FromJson)
  • 兼容 v1:无 version / 对象无 parent 字段 → 全部按根对象加载
  • 相机兜底:加载后场景内无已启用相机则自动补 game_camera

成员函数说明

◆ fromJson()

void fromJson ( const nlohmann::json & doc,
Scene * scene )
static

把 JSON 追加实例化进目标场景(对象 + 组件 + 层级 + 相机兜底)。 调用方负责前置清场(如编辑器"打开"先删旧对象); 实例化失败仅跳过对应对象,不抛异常、不影响已加载部分。

◆ toJson()

nlohmann::json toJson ( Scene * scene,
const std::vector< std::string > & excludeNames = {} )
static

序列化整个场景(含层级)为 v2 JSON。被排除的对象(如编辑器相机)不落盘, 其子对象提升为根(parent=-1)。


该类的文档由以下文件生成: