
开场凌晨两点,美术刚把 200 个新模型拖进 Unity,场景里一片飘红——所有 Prefab 引用丢失,材质变粉。同事催着要版本,打包出来 APK 直接超标被拒。这不是段子,是很多团队踩过的坑。根源往往是同一个:场景系统和资源系统没分清。场景管"世界长什么样",资源管"这些东西从哪来、怎么存、怎么送进显存"。两个系统协同出错,再好的美术也救不回来。下面我们就把这两个"世界管家"拆开讲清楚——不只讲怎么调 API,更要讲底层为什么这样设计。一、场景系统与资源系统:核心概念1.1 场景系统:世界的骨架与蓝图场景(Scene)本质是一棵 GameObject 树,描述"哪些实体在哪、彼此什么关系"。注意一个关键事实:场景文件不存储模型的顶点数据,只持有引用。一个场景的 YAML/二进制文件里记录的是"位置 (x,y,z) 处放一个 GUID 为 xxx 的 Prefab 实例"——这就是场景文件通常只有几百 KB 而场景画面占几个 GB 内存的原因。这个"引用而非内嵌"的设计是一切协作问题(引用丢失、材质变粉)的来源,也是一切优化手段(引用计数卸载、按需加载)得以成立的基础。// Unity 中典型的场景加载逻辑 public class WorldManager : MonoBehaviour { public string[] levelNames; // 关卡场景名数组 public void LoadLevel(int index) { // A