是什么关卡特定数据任务、敌人、npc、初始道具不存储在scene里做完关卡后导出为配置文件json、SO、预制体。加载关卡时加载配置生成关卡。背景多关卡共用地图以及遮挡剔除数据、导航网格要不要把一个地形预制体用在多个场景还是一个地图固定放一个场景关卡内容动态加载一个地形它的导航网格、遮挡剔除数据都是和地形绑定的。现在的问题是生成遮挡剔除数据是直接保存在场景文件夹的使用同一个地形的多个场景使用的遮挡剔除数据是一样的。导航网格数据如果在地形预制体的检查器Bake就会保存到预制体。或许应该做好一个关卡后导出配置文件然后把关卡具体的物体都删掉进入关卡时动态加载热更新关卡配置文件可以打进ab包替换ab包来热更新。关卡数据直接拖成预制体最简单关卡特定内容敌人生成器、NPC、道具、任务全放一个gameObject Level下面。关卡做完Level拖成预制体 场景里删掉场景变回一个有管理器、地图的场景。对了如果同一个地图不同关卡的光源状态不一样把光源也放进Level。一场景一地图动态加载关卡预制体架构加载关卡时从只需要输入场景名变成需要输入场景名关卡预制体。如果下一个关卡的地图不变那是没有必要切场景的只需要把关卡根对象删掉把管理器对关卡对象的引用去掉加载下一关预制体就行。如果懒得判断还是可以无脑切场景。它的好处就是不用在用一张地图的不同场景计算一模一样的遮挡剔除数据。地图和场景紧密联系地图甚至无需做预制体。有一个小问题是烘焙的贴图是和光源状态匹配的玩家放关卡预制体还是直接在场景里不同关卡里玩家出生的位置不同玩家出生位置属于关卡数据但是如果把玩家放关卡预制体里管理器初始化需要找到玩家。现在所有对象里在Awake里找管理器引用玩家的代码都要放到Start。我倾向于玩家放在场景里记录玩家出生位置的结构放在关卡预制体。然后我们需要关卡预制体里有一个管理器引用这个玩家出生位置。在它Start里它去管理器里找到玩家设置位置。还有玩家随机出生在几个位置中的一个的情况。游戏场景划分策略切场景vs预制体销毁加载我们完全可以一个游戏只有一个场景全靠各种预制体销毁、加载来“切场景”。那么什么时候适合切场景两个关卡没有任何共用对象时。从大厅到关卡大厅没有玩家人物、地图、任务、NPC、敌人。关卡和关卡之间共用管理器、玩家地图、关卡特定信息任务、敌人、NPC、道具不同是否共用场景可以商榷。如果地图也共用则适合共用场景地图和遮挡剔除、导航网格、小地图数据绑定遮挡剔除总是生成在场景文件夹。Json配置化做完关卡要用编辑器工具一键生成为一个json然后可以把刚摆的东西都删掉再一键从json还原场景。先盘点做关卡要摆哪些物体敌人及其生成器、NPC、道具包括可拾取物品、箱子、任务。敌人预制体、敌人生成器预制体都应该记录在配表。C#配置类记录敌人id、装备如果不随机生成对于敌人生成器记录位置、形状、半径