做关卡原型这件事,在 Unity 里有 Probuilder、Blockout 插件,在 Unreal 里有 BSP 和建模模式,而 Godot 这边长期靠手搓 CSG 节点或者导入外部白模资产。每次改尺寸、改位置、试跳跃距离,都要回到场景树里调参数,效率一直不算高。这次我们来看一个专门解决这个问题的开源插件:CSG Blockout 3.0。它把 Godot 4 的原生 CSG 能力封装成了编辑器工具栏里的“画、量、试玩、冻结”四个操作,不需要建模软件,不需要导入 FBX,直接在 3D 视口里拖拽就能搭出可碰撞、可测量、可试玩的白盒关卡。
先给结论:这个插件适合所有用 Godot 4 做 3D 游戏、又不想在原型阶段被“搭场景”拖慢节奏的开发者。它的核心不是什么复杂的算法黑科技,而是把编辑器的 CSG 操作变成了更像“画图”的交互,同时把“CSG 不能直接用于正式版本”这个坑用“冻结”功能补齐。下面这篇文章会从插件安装、环境准备、四个核心功能逐一拆解,再到工作流整合、资源占用、常见问题排查,完整过一遍。如果你正在做关卡设计、灰度图布局验证、或者想从灰盒快速过渡到可玩原型,这篇文章可以直接收藏。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 插件类型 | Godot 4 编辑器插件,基于原生 CSG 节点 |
| 主要功能 | CSG 方块绘制、尺寸测量、编辑器内试玩、CSG 冻结为静态网格 |
| 运行环境 | Godot 4.x 标准版 / .NET 版均可;纯 GDScript 场景建议标准版即可 |
| 显存要求 | 编辑器运行时无额外显存压力,取决于场景整体复杂度 |
| 是否支持 API | 不支持 HTTP / 命令行 API,属于编辑器交互工具 |
| 是否支持批量任务 | 不支持传统批量队列,但支持多节点批量冻结、批量导出场景 |
| 启动方式 | 编辑器插件启用后,从 3D 视口顶栏工具栏打开 |
| 底层依赖 | Godot 原生 CSGShape3D、CSGCombiner3D 节点 |
| 适合场景 | 关卡灰盒、白盒原型、动线验证、碰撞测试、布局灰度验证 |
| 不适合场景 | 最终美术资产、精细 UV 模型、高精度地形雕刻 |
从这张表能看出,CSG Blockout 3.0 不是一个“生成最终资产”的工具,而是一个“快速验证设计”的工具。它的价值在于把从“脑子里的想法”到“可跑可测的关卡”中间那段距离压缩到最短。
2. 适用场景与使用边界
2.1 适合谁用
- 独立开发者:一个人要兼顾程序、美术、策划,没时间在原型阶段等美术资产,用 CSG 拖几笔就能开始跑角色。
- 关卡设计师:需要验证房间大小、走廊宽度、跳跃距离、掩体高度,这些数据在灰盒阶段必须实测,CSG 比导入模型快得多。
- Game Jam 参赛者:48 小时内要出可玩 demo,布景速度直接决定能玩到第几关。
- 刚学 Godot 的新手:想理解 CSG 节点原理,又不想手动拼布尔操作,用这个插件可以边画边看场景树结构。
2.2 能解决什么问题
- 关卡动线验证:画完走廊和门洞,直接试玩模式走一遍,立刻知道宽度够不够。
- 碰撞原型:CSG 节点默认可以生成碰撞,玩家能真正站在台阶上、撞到墙壁。
- 尺寸测量:不再靠眼睛估算,插件提供测量工具,量房间跨度、量跳跃平台间距。
- 快速迭代:改布局只需拖拽节点或重新画一块 CSG,不需要重新导模型。
- 从灰盒到正式资产之间的桥梁:冻结功能把 CSG 转成普通 mesh,后续可以替换成正式模型。
2.3 不适用与边界
CSG 节点并不是 Godot 里最稳定的渲染方式。复杂布尔运算、大量 CSG 交叉重叠,会导致视口显示异常、UV 拉伸、光照烘焙结果怪。所以插件提供“冻结”功能,CSG 只用于设计阶段,一旦布局确定就转成静态网格继续往前走。
这里涉及几个使用边界:
- 版权边界:如果你导入第三方灰盒模型、贴图、字体来测试,要确认授权范围。不要拿商店里未授权的素材直接放到自己的 demo 或直播、录屏中展示。
- 项目干净度:CSG 节点在导出正式版本前如果没有冻结,可能造成运行时额外开销。项目交付前应统一冻结并清理无用的 CSG 操作节点。
- 素材合规:哪怕只是原型阶段,也要遵守引擎内置资源的许可协议和第三方资产授权,尤其是用于教程发布、作品集展示时。
- 不得用于安全敏感环境:如果项目要接入网络服务、云构建、多人同步,CSG 节点本身不是重点,但编辑器自动化脚本要注意权限,避免插件代码执行不信任的外部资源。
3. Godot CSG 基础概念
3.1 CSG 是什么
CSG 全称 Constructive Solid Geometry,构造实体几何。Godot 4 里对应的是 CSGShape3D 这一组节点,包括 CSGBox3D、CSGSphere3D、CSGCylinder3D、CSGPolygon3D、CSGTorus3D 等基础几何体,以及 CSGCombiner3D 这个容器节点。多个 CSG 节点可以在一个 Combiner 里做 Union(联合)、Subtraction(减去)、Intersection(交集)操作。
在关卡原型里,最常见的用法是:
- 几个 CSGBox3D 拼出房间和走廊;
- 用 Subtraction 做出门洞、窗户、通道;
- 用 CSGCombiner3D 把多个体积合并成一个整体碰撞体。
3.2 为什么原生 CSG 适合做关卡原型
第一,操作快。直接改参数就能调整长宽高,不需要回到建模软件重新导出。第二,可视化直观。编辑器视口里实时布尔,拖一下就能看到拼接结果。第三,自带碰撞。CSG 节点开启 Use Collision 后,可以在测试场景里直接跑动。
CSG 的一些已知限制也需要提前了解:
- 渲染显示不稳定:复杂 CSG 可能产生深度冲突、闪烁、渲染顺序错误。这个在编辑器中明显,在冻结后消失。
- UV 展开不理想:CSG 的 UV 是程序化生成的,做正式模型纹理不合适。
- 光照烘焙不稳定:Godot 4 的 LightmapGI 对 CSG 支持有限,Baked Light 结果可能异常。
- 运行时 CPU 开销:CSG 在运行时计算网格,如果场景里几百个 CSG 节点,性能会明显下降。
所以标准工作流是:CSG 搭灰盒 → 验证玩法 → 冻结成静态网格 → 替换正式模型。这也是 CSG Blockout 3.0 插件把“冻结”单独拿出来作为核心功能的原因。
4. 环境准备与前置条件
4.1 引擎版本
CSG Blockout 3.0 主版本面向 Godot 4.x。安装前先确认你的 Godot 版本是 4.0 以上,且建议使用最新的 4.x 稳定版。可以在编辑器窗口左上角 Help -> About Godot 里查看版本号。
# 查看 Godot 版本 godot --version如果你用的是 Godot 4.0 的早期版本,某些插件功能可能不兼容,稳妥做法是升级到当前稳定版本后再导入插件。插件入口是 GDScript,标准版和 .NET 版都能用,不需要额外安装 .NET SDK。
4.2 项目目录与备份
创建新项目时建议规划好目录结构,CSG 原型场景和正式场景分开放。
project/ ├─ addons/ │ └─ csg_blockout/ ├─ scenes/ │ ├─ blockout/ │ └─ gameplay/ ├─ assets/ │ ├─ models/ │ ├─ materials/ │ └─ textures/ ├─ exports/ └─ project.godot导入插件前先备份project.godot和addons/目录。绝大多数编辑器插件通过修改项目配置来注册扩展,虽然 CSG Blockout 这类工具插件通常不破坏已有场景,但备份永远是低成本高收益的操作。
4.3 磁盘和内存
插件本身只有少量 GDScript 文件和图标资源,几十 MB 以内。主要资源消耗来自你的场景、贴图和角色测试模型。原型阶段建议保持场景精简,避免导入大量高精度素材,否则 Editor 会卡顿。
5. 安装部署与启动方式
5.1 从 AssetLib 安装
打开 Godot 项目,点击顶部菜单AssetLib,搜索CSG Blockout,找到 3.0 版本后点击 Download,然后 Install。安装向导会提示下载到addons/csg_blockout,一路确认即可。
安装完成后重启编辑器,从Project -> Project Settings -> Plugins里找到 CSG Blockout,勾选 Enable 启用。启用后顶部 3D 视口工具栏会新增对应按钮。
5.2 手动安装
如果 AssetLib 网络访问不稳定,或者你从 GitHub 仓库下载了 zip,可以手动安装。
# 解压后把 csg_blockout 文件夹放到项目的 addons 目录 your_project/ └─ addons/ └─ csg_blockout/然后同样在 Project Settings -> Plugins 里启用。启用的标准结果是:3D 视口顶栏出现插件按钮,打开插件面板后可以看到绘制、测量、试玩、冻结等工具选项。
5.3 启动与基本界面
进入 3D 场景后,点击插件按钮打开工具面板。CSG Blockout 3.0 的操作逻辑和 Unity 的 Blockout 插件类似:
- 选中“绘制”工具;
- 在视口网格上按住拖拽,拉出一个 CSG 盒子;
- 松开后生成对应 CSG 节点;
- 使用“测量”工具点击两个点,查看距离;
- 使用“试玩”工具进入编辑器内自由移动;
- 满意后选择所有 CSG 节点,执行“冻结”。
打开 2D 视口查看场景树,你会发现生成的节点都是原生 CSG 节点,完全兼容你自己手搭的 CSG 场景。这也是这个插件的一个优点:它没有引入私有节点类型,底层都是 Godot 原生节点,冻结前你完全可以手动调整。
6. 功能测试与效果验证
先准备一个测试场景:新建一个 Node3D,随便放一个 CharacterBody3D 或 RigidBody3D 用于碰撞测试。后续所有操作都在这个场景里进行。
6.1 测试目标
- 验证能否快速绘制 CSG 盒子;
- 验证测量结果是否准确;
- 验证试玩模式下是否可以自由移动并碰撞;
- 验证冻结后节点类型和碰撞配置是否合理。
6.2 画:绘制 CSG 方块
测试目的:用最少操作搭出房间框架。
操作步骤:
- 打开插件面板,选择 Draw 工具;
- 在 3D 视口网格平面按住鼠标左键拖拽;
- 松开后生成一个 CSGBox3D 节点;
- 选中节点,观察 Inspector 中的 Size 和 Position 参数;
- 继续拖拽几个不同大小的盒子,拼出走廊和一个房间。
预期结果:
- 场景树出现多个 CSGBox3D,且位置、尺寸随拖拽变化;
- 视口中盒子互相拼接,没有明显穿透;
- 可以随时在 Inspector 中精确修改数值。
判断标准:能在 10 分钟内搭出一个能看懂的关卡灰盒,而不是花 40 分钟在建模软件里摸按钮。
常见失败原因:
- 网格对齐没有开启,导致盒子与盒子之间存在微小偏移。处理方法:打开工具栏的 Snap 设置,调整网格间距;
- 拖拽方向不对,导致只生成了很小或很大的盒子。处理方法:检查视口朝向,确认当前处于 Top View 或 Perspective 对齐视角;
- 插件与编辑器快捷键冲突。处理方法:在 Project Settings -> Input Map 中检查,必要时重置快捷键。
6.3 量:测量工具
测试目的:验证关卡尺寸是否符合设计数据。
操作步骤:
- 选择 Measure 工具;
- 鼠标单击一个 CSG 盒子的边缘点;
- 拖动到另一个 CSG 盒子的边缘点;
- 查看测量的距离数值。
预期结果:
- 显示两点之间的水平距离或三维距离;
- 测量结果与 Inspector 中的节点坐标差值一致。
判断标准:测量一条走廊宽度、一个门洞高度、一个跳跃平台间距,三者都符合设计表。
拓展用法:
- 把测量结果记录下来,建立关卡尺寸规格表;
- 用数字驱动后续场景搭建,而不是靠感觉不断调整。
6.4 试玩:编辑器内试玩验证
测试目的:验证角色碰撞、跳跃距离、通道宽度在物理上是否成立。
操作步骤:
- 确认 CSG 节点开启了 Use Collision;
- 放置一个测试角色到场景中;
- 点击插件的 Play 工具;
- 在编辑器视口内使用 WASD 移动,鼠标控制视角;
- 尝试走走廊、跳平台、撞墙。
预期结果:
- 角色能与 CSG 碰撞体正确交互;
- 通道宽度足够通过;
- 平台间距在跳跃能力范围内。
判断标准:试玩过程中没有出现“穿墙”、“卡死”、“掉出地图”这些影响判断的问题。试玩结束后,退出工具模式,场景自动恢复。
这里有个重点:CSG 的碰撞体是程序生成的,碰撞网格质量和 CSG 布尔操作复杂度有关。如果试玩时碰撞区域明显不对,多半是 Subtraction 操作产生了薄片或非流形网格。解决办法是减少布尔层级,尽量把 CSG 组织成简单的 Union,而不是嵌套多层减运算。
6.5 冻结:CSG 转静态网格
测试目的:把 CSG 原型转成适合正式场景使用的静态网格节点,并保留碰撞。
操作步骤:
- 在场景树中选中要冻结的 CSG 节点或 CSGCombiner3D;
- 点击插件面板的 Freeze 工具;
- 观察场景树变化;
- 如果冻结后没有得到自动碰撞体,手动添加 StaticBody3D 并生成 Trimesh Collision。
预期结果:
- 原 CSG 节点被替换或生成对应的 MeshInstance3D 节点;
- 节点变成普通静态网格,不再具有 CSG 实时计算属性;
- 碰撞、位置、旋转信息保留。
判断标准:冻结后运行游戏,碰撞表现与冻结前一致;连续播放多次没有渲染闪烁或网格跳动。
要特别注意:冻结是不可逆操作。如果还需要调整布局,建议先复制一份场景,或者把冻结后的结果放到一个单独的blockout_frozen目录里。不建议冻结后用 MeshInstance3D 去继续做 CSG 级别的增删改,那样效率会低很多。
6.6 功能联动测试
上面四个功能单独测完,再按完整流程走一遍:
- 用画工具搭出两个房间和一个连接走廊;
- 用量工具确认门洞高度、走廊宽度;
- 用试玩工具走一遍角色动线;
- 确认无误后冻结整个原型;
- 在冻结后的场景上跑一个完整 gameplay 测试。
这个流程能验证插件是否真正解决“灰盒到可玩原型”的最后一公里。如果中间任何一步导致返工,说明还需要调整原型策略。
7. 结合 Terrain3D 与灰度图布局的工作流
7.1 CSG Blockout 与 Godot 地形编辑器配合
很多人关心 CSG 关卡原型怎么和 Terrain3D 这类地形插件配合。正确的分工是:
- CSG Blockout 负责硬表面结构:房间、走廊、楼板、台阶、掩体;
- Terrain3D 负责自然地形:山坡、洼地、道路、大范围地表;
- 两者用场景节点划分区域,避免 CSG 大面积嵌套在 Terrain3D 内部,否则地形雕刻会和 CSG 网格互相穿插。
推荐做法是:
LevelRoot/ ├─ Blockout/ │ ├─ RoomA (CSGCombiner3D) │ ├─ Corridor (CSGCombiner3D) │ └─ RoomB (CSGCombiner3D) └─ Terrain/ └─ Terrain3D先用 CSG Blockout 把玩家必经路径、关卡关键战斗区域全部白盒化,然后把它冻结成静态网格。接着在 Terrain3D 里雕刻地形时,把冻结后的网格作为视觉参考(或者直接作为碰撞层使用)。这类“先白盒、后地形”的流程,能减少后期大范围返工。
7.2 从灰度图楼层平面开始做关卡原型
更进一步的流程是,先用图像编辑软件或引擎工具绘制一张楼层灰度图:黑色表示不可通行区域,白色表示可通行区域。然后把这张图导入 Godot 作为参考图,放到一个 Sprite3D 或直接在视口背景中显示。根据灰度图,在 CSG Blockout 里逐区域绘制 CSG 盒子。绘制完毕后,用测量工具将关键通道尺寸和灰度图比例尺对齐。
这个流程的好处:
- 关卡布局可以先用 2D 工具快速迭代;
- 灰度图天然带有通道和阻挡信息;
- CSG 白盒完成后,可以直接把灰度图用于后续 AI 寻路网格生成参考。
一种比较稳的目录结构:
scenes/ ├─ blockout/ │ ├─ level_01_whitebox.tscn │ └─ level_01_gray_layout.png └─ final/ └─ level_01_final.tscn7.3 光照与烘焙时机
CSG 原型阶段不适合做光照烘焙。除非你只是想快速看个明暗关系,否则应等冻结后再使用 LightmapGI 烘焙。如果直接在大量 CSG 节点上烘焙,可能出现漏光、阴影块、UV 无法展开等异常。先白盒试玩确认布局,再替换材质和模型,最后统一烘焙,能省下大量排查问题的时间。
8. 资源占用与性能观察
8.1 Godot CSG 节点在编辑器中的资源占用
CSG 是实时计算节点,每次参数变化、每次布尔操作,Godot 都要重新生成网格。场景里几十个 CSG 节点不会造成明显压力,但如果一个 CSGCombiner3D 里堆了数百个布尔操作,编辑器会开始卡顿。
观察方法:
- 打开编辑器顶部调试器( Debugger )面板中的监视器( Monitors );
- 查看 Rendering 相关的 Mesh 数量、Vertices 数量;
- 拖动 CSG 盒子时观察帧率变化。
如果拖拽时画面明显掉帧,说明 CSG 复杂度已经到了该冻结的临界点。
8.2 冻结后的性能对比
冻结成 MeshInstance3D 后,场景不再需要实时计算网格,运行时性能会明显变好。不过要注意,冻结后的静态网格如果包含大量细小三角面,渲染压力并不会自动降低。建议:
- 冻结前尽量保持 CSG 的面数整洁;
- 冻结后使用
Mesh -> Simplify或外部工具减面; - 碰撞体优先使用凸包或简单形状,避免逐三角面碰撞。
一个实用的准则是:CSG 做设计,冻结做交付,减面做优化。
8.3 如何避免编辑器卡顿和崩溃
- 定期执行“绘制 → 试玩 → 冻结”的小循环,不要让 CSG Combiner 无限增长;
- 冻结前先另存场景,防止意外的编辑器崩溃;
- 不要在一个场景里同时打开 Terrain3D 自动雕刻和大量 CSG 节点,否则内存占用叠加;
- CSG 和地形等大网格混合编辑时,尽量把无关节点放到别的层或隐藏。
对于大型关卡,更建议使用多个场景子节点(分段加载),而不是在一个巨大场景里堆所有 CSG。
9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 插件启用后工具栏不出现 | 插件未正确加载;UI 添加代码被禁用 | 检查 Project Settings 里插件是否勾选;查看 Output 面板报错 | 重新启用插件,重启编辑器;检查 addons 路径 |
| 绘制时无法生成 CSG 盒子 | 当前没有选中 3D 场景根节点;没有开启编辑模式 | 确认场景是 3D;确认在 3D 视口点击 | 新建 Node3D 场景,再使用绘制工具 |
| CSG 盒子在视口里闪烁 | CSG 布尔生成网格的深度冲突 | 查看是否有重叠面;检查 CSG 操作类型 | 减少重叠面;冻结后消失 |
| 试玩时角色穿墙 | CSG 节点未开启 Use Collision;碰撞体生成失败 | 选中 CSG 节点查看 Inspector 的 Collision 设置;运行场景按 F2 查看碰撞体形状 | 开启 Use Collision;手动添加碰撞节点 |
| 冻结后碰撞丢失 | 冻结生成的是纯 MeshInstance3D,未自动创建碰撞体 | 检查冻结后节点树是否有 StaticBody3D | 手动添加 StaticBody3D,使用 Create Trimesh Collision |
| 快捷键和系统输入冲突 | 插件绑定的快捷键被其他插件占用 | 进入 Project Settings -> Input Map 搜索快捷键 | 修改快捷键或关闭冲突插件 |
| 启动项目时出现 GDScript 报错 | Godot 版本过旧或插件文件不完整 | 查看 Output 面板详细报错 | 升级 Godot;重新下载插件 |
| 大量布尔操作后编辑器明显变慢 | CSG 实时生成网格压力大 | 观察 Monitors 面板 | 减少布尔层级;执行冻结 |
| 冻结点过多无法一次完成 | 场景树选择范围过大 | 分批冻结或按区域冻结 | 按房间/区域分批次冻结 |
| 场景里出现重复 CSG 网格 | 多次拖拽生成了重叠节点 | 查看场景树节点数量 | 删除重叠节点,使用冻结后的静态网格替代 |
9.1 Godot 下载打不开怎么办
很多新手第一次接触 Godot 时卡在“下载打不开”,这里顺带说明。从 Godot 官网下载标准版 zip 后,Windows 下解压双击Godot_v4.x.exe即可。如果双击无反应:
- 确认系统安装了正确的运行库;
- 确认 GPU 驱动支持 Vulkan;
- 可以尝试在命令行运行查看报错。
./Godot_v4.3-stable_win64.exe --editor把可执行文件放到英文路径下,避免中文目录导致资源加载异常。启动后如果报 OpenGL / Vulkan 错误,在导出选项里可以切换图形 API,也可以使用--rendering-driver opengl3临时绕过。
9.2 更新插件后 Floder 路径变化
如果从旧版升级到 3.0,旧场景里的 CSG 节点一般不会失效,因为它们就是原生节点。但插件面板的配置可能重置,需要重新设置网格间距、绘制层等参数。升级前记录原有配置,升级后重新设置即可。
10. 最佳实践与合规提示
10.1 关卡原型的目录和命名规范
- 场景文件名一律加
_blockout后缀; - 冻结后再另存为
_final,不覆盖原文件; - CSG 节点命名按功能:
CSG_Block_RoomA_Wall、CSG_Block_Door; - 按区域分目录:
scenes/blockout/area_a/、scenes/blockout/area_b/。
10.2 第一次使用建议
第一次拿到 CSG Blockout 3.0,不要直接去搭完整关卡。先用一个空场景画几个盒子、量几个距离、试玩一小段、冻结一次。把这个四步流程跑通,再进入正式关卡白盒。顺序反过来的话,你会一边学插件一边搭设计,很容易被“插件功能到底怎么用来验证布局”这个问题打断。
10.3 与其它工具链配合
- 与 Godot 自带 NavigationRegion3D:在白盒阶段就可以生成导航网格,提前验证 AI 寻路路径;
- 与 Terrain3D:白盒冻结后导入地形雕刻;
- 与外部 DCC 工具:冻结后的 OBJ/GLTF 导出后可以传给 Blender 做资产细化;
- 与 Git:插件配置文件、项目配置都纳入版本管理,但
addons目录建议直接提交,确保团队协作用同版本插件。
10.4 合规和安全提示
- 关卡原型中使用的图标、贴图、灰盒模型,如果来自第三方素材包,务必确认许可证允许在项目原型中使用;
- 如果是商业项目,避免在原型阶段使用未授权的商标、角色形象、音乐素材;
- 发布演示视频、直播流程时,注意场景里不要出现与你无关的玩家隐私数据或环境截图;
- 如果项目涉及多人协作,不要直接在共享场景中执行批量冻结操作前无提示覆盖他人节点;
- 保持
addons/csg_blockout插件本体更新,但不要随意运行来源不明的第三方脚本,防止恶意代码污染项目。
这些看起来像是“额外注意事项”,但对一个编辑器工具类插件的长期使用来说,它们和功能本身一样重要。
11. 总结与下一步
CSG Blockout 3.0 最值得尝试的点,是它把 Godot 原生 CSG 的体验拉到了专业关卡设计工具的水平。你不用再记 CSG Combiner 的嵌套规则,也不用为了搭一块台阶就跑去 Blender。先体验“画”和“试玩”这两个功能,花 10 分钟搭一间小房间,走一圈,量一下门宽,然后用“冻结”把它变成正式场景的起点。
最容易踩的坑有三个:一是 CSG 在编辑器里的渲染闪烁,这不一定是你操作错了,而是 CSG 本身的显示特性,冻结后自然会消失;二是冻结前没备份场景,导致改不回去;三是一次性画太多布尔操作,编辑器开始卡顿。只要按“多冻结、勤备份、分批处理”的节奏,这些问题都能绕开。
下一步可以做的事已经很清楚:先规划一张简单关卡布局图,用 CSG Blockout 搭成灰盒,测完玩法后冻结,再导入 Terrain3D 做地形细化,最后替换正式美术资产。这个流程跑顺之后,你会发现关卡原型阶段的时间能压缩到原来的一半甚至更少。建议收藏备用,下次开新项目时直接按这套工作流推进。