Unity 在默认状态下无法导入 GLB(glTF)文件。Unity 官方手册列为默认支持的 3D 模型格式是 .fbx / .dae(Collada)/ .dxf / .obj,glTF 和 GLB 并不在其中(来源:Unity Manual - Model file formats,截至2026年7月)。要使用 GLB,需要通过 Package Manager 添加 Unity 官方提供的包 Unity glTFast(com.unity.cloud.gltfast)。添加之后,只需把 GLB 复制到 Assets 文件夹,就会像其他 3D 格式一样被导入。
本文只聚焦于“让 Unity 读取 GLB”这一技术步骤本身。从把插画转换成 3D 模型,到绑定和动画的实际情况,完整流程已整理在如何在Unity中把2D角色插画3D化|转换、导入与让角色动起来的条件中,想了解整个工作流程的话请先阅读那篇。
※目前的 Figmee 是一项可以根据上传的绘画或插画生成并下载手办风格图像和 3D 模型数据(GLB / 3MF)的服务。实物 3D 打印品的销售正在准备中(Coming Soon)。
为什么默认无法读取
Unity 的设计是以 FBX 作为内部导入路径,官方手册也建议“尽可能使用 .fbx 是最佳实践”。而 glTF 2.0 是 Khronos Group 制定的“用于在运行时快速显示”的格式,在 Web 和实时显示领域被广泛使用。由于两者目的不同,所以 glTF 没有被纳入 Unity 核心。
| 格式 | Unity 默认支持 | 特点 |
|---|---|---|
| FBX | 支持 | Unity 的内部导入路径。擅长传递动画和绑定 |
| OBJ | 支持 | 以形状为主的简单格式。材质存放在单独文件中 |
| DAE(Collada) | 支持 | 基于 XML 的交换格式 |
| DXF | 支持 | 用于与 CAD 类软件交换数据 |
| glTF / GLB | 不支持(通过包添加) | 可将颜色和纹理打包进一个文件,便于与 Web 显示共用 |
各格式的特性差异已在OBJ、FBX、STL、GLB有什么区别?3D文件格式选择指南中整理。如果手头的数据已经是 GLB,最直接的做法是不经转换,直接用 glTFast 读取。
安装 Unity glTFast(约 3 分钟)
Unity glTFast 是 Unity 提供的官方包,设计上注重“速度、内存效率和较小的构建体积”。它支持 glTF 2.0 规范及众多扩展,支持所有平台以及 Built-in / Universal(URP)/ High Definition(HDRP)各渲染管线(来源:Unity glTFast Documentation,截至2026年7月,版本 6.17.0)。
官方文档中记载的安装步骤如下(来源:Unity glTFast - Installation,截至2026年7月)。
- 打开 Unity 项目,选择
Window > Package Manager(20 秒)。 - 点击状态栏上的添加(+)按钮(10 秒)。
- 从菜单中选择
Add + package by name(10 秒)。 - 在 Name 栏中输入
com.unity.cloud.gltfast(20 秒)。注意不要输错。这个 ID 才是官方包的名称,而不是旧版个人仓库沿用下来的名称。 - 点击
Add(1 分钟)。会自动获取最新版本。视网络环境而定,可能需要几分钟。
根据用途添加的可选模块
glTFast 与 Unity 的内置包或附加包组合使用时,支持范围会更广。官方文档列出的有以下几项。
- Image Conversion:支持 JPEG / PNG 纹理
- Unity Web Request Texture:通过 URI 读取图像
- Animation:播放动画
- Physics:生成碰撞体
- Draco for Unity / KTX for Unity / meshoptimizer decompression for Unity:使用对应的 glTF 扩展(网格压缩、纹理压缩)时
不必一开始就全部安装。等出现“纹理不显示”“压缩过的 GLB 打不开”之类的症状时,再添加相应模块即可。
导入 GLB(约 2 分钟)
安装完成后,处理方式就和其他 3D 格式相同了。
- 将 GLB 文件移动或复制到项目的
Assets文件夹(30 秒)。官方文档说明:“可以像其他 3D 格式一样,把 glTF 文件移动或复制到项目的 Assets 文件夹。Unity glTFast 会将其导入为 Unity 原生预制体,并添加到资源数据库中”(来源:Unity glTFast - Editor Import,截至2026年7月)。 - 如果是
.gltf格式,要把附带文件一起复制(30 秒)。同一文档明确写道:“别忘了同时复制附带的缓冲区(.bin)和图像文件。文件名和相对路径不能更改,否则可能导致引用失效。”.glb是打包在一个文件里的,所以没有这个顾虑。这也是交付时常选择 GLB 的原因之一。 - 在 Project 视图中选中文件,查看 Inspector(1 分钟)。导入设置以及警告、错误(如果有)都会显示在这里。读取结果与预期不符时,先看这里的信息。
- 在 Project 视图中展开文件(30 秒)。导入后的组成部分会列出 Scenes / Meshes / Materials / AnimationClips / Textures。想把单个网格或材质复用到其他对象上时,就从这里取用。
- 拖入场景进行放置(10 秒)。操作与普通预制体相同。
关于扩展名关联
glTFast 安装后,会把自己注册为 .gltf 和 .glb 的默认导入器。也就是说,安装之后无需任何特别操作,这些扩展名的文件就会自动通过 glTFast 读取。
如果已经在使用其他 glTF 导入器并发生冲突,可以在项目的脚本符号中添加 GLTFAST_FORCE_DEFAULT_IMPORTER_OFF,以禁用 glTFast 的默认导入器注册。在同时使用多个 glTF 类资源的项目中,若“读取结果与预期不符”,请首先怀疑究竟是哪个导入器在起作用。
如何解读生成的子资源
在 Project 视图中展开 GLB 后出现的 5 种内容,各自作用不同。掌握这些之后,日后遇到“只想复用一部分”“只想替换材质”之类的需求时就能迅速应对。
| 子资源 | 内容 | 常见使用场景 |
|---|---|---|
| Scenes | 节点的层级结构 | 放置到场景中的主体。通常拖动的就是它 |
| Meshes | 形状数据 | 只把网格复用到其他对象上 |
| Materials | 颜色与质感设置 | 替换着色器/配合项目的表现风格 |
| Textures | 图像数据 | 按项目标准统一压缩设置和分辨率 |
| AnimationClips | 动画 | 仅当原始数据包含动画时才会出现 |
如果 AnimationClips 是空的,这并不是导入失败,而是说明原始 GLB 中没有动画。由一张画生成的 3D 模型是静态网格,因此这一项通常为空。
Materials 中列出的材质遵循 glTF 核心规范。glTF 材质由基础色、金属度、粗糙度、环境光遮蔽、法线贴图、自发光等通道构成,在 Unity 端会被分配到项目的着色器上。觉得“比想象中更像金属”“太亮太反光”时,需要调整的通常就是金属度和粗糙度这两项。
也要了解其他选择
在 Unity 中处理 glTF 的手段不只有 glTFast。Khronos Group 公开的 UnityGLTF(截至2026年7月)是面向 Unity 的运行时 glTF 2.0 加载器/导出器,同样以开源形式提供。如果重视导出功能,或者现有项目已经采用了它,它会是有力的选择。
这并不是孰优孰劣的问题,根据项目需求(需要支持的扩展、是否需要导出、现有资源)来选择才更务实。如果是新项目且只需读取,作为 Unity 官方包可从 Package Manager 安装的 glTFast 导入更简单。
导入后务必确认的 3 点
能读取进来,并不代表就能直接使用。
1. 材质与渲染管线
这是最常见的坑。glTFast 对 Built-in / URP / HDRP 全都支持,但如果项目的管线与材质的着色器不匹配,就会显示为纯白、纯黑或洋红色(粉色)。洋红色是 Unity 找不到着色器时的默认显示,所以出现这种颜色时,请先怀疑管线不匹配。同时也要确认场景中是否放置了灯光。
2. 缩放与原点
有时刚放置时,角色会显得巨大或极小。这是原始数据没有按真实尺寸制作时出现的现象,并不是错误。可以通过 Transform 的 Scale 进行调整,或者与地面、已有对象并排比较来相对确定大小。原点(在脚下还是身体中心)也最好在这个阶段确认,之后的摆放会更轻松。
3. 面数与显示负载
AI 生成的模型或精细制作的模型,按实时显示的标准来看面数可能偏多。面数越多,绘制和处理负载越高,面向移动端时影响越明显(什么是多边形数?多了会怎样?按用途的参考值与计数方法通俗讲解)。以同时显示多少个角色为基准,必要时先在 Blender 等软件中减面,再重新导入。
故障排查表
| 症状 | 可能原因 | 解决方法 |
|---|---|---|
| 放入 GLB 后没有任何反应 | 未安装包 | 在 Package Manager 中添加 com.unity.cloud.gltfast |
| 运行的导入器与预期不同 | 与其他 glTF 资源冲突 | 用 GLTFAST_FORCE_DEFAULT_IMPORTER_OFF 切换 |
| 显示为洋红色(粉色) | 着色器与管线不匹配 | 替换为适合项目管线的着色器 |
.gltf 不显示纹理 | 未复制 .bin 或图像文件 | 将附带文件按相同相对路径一起放置 |
| 压缩过的 GLB 打不开 | 未安装对应扩展的模块 | 添加 Draco / KTX / meshoptimizer 各包 |
| 显示为纯黑 | 场景中没有灯光 | 放置灯光,并在材质预览中确认 |
| 无法活动、无法改变姿势 | 没有骨骼 | 需要另外进行绑定(什么是绑定?) |
常见问题
Unity 默认有 glTF / GLB 导入功能吗?
没有。Unity 官方手册列为默认支持的格式是 .fbx / .dae / .dxf / .obj。要使用 GLB,需要通过 Package Manager 添加 Unity 官方包 glTFast(com.unity.cloud.gltfast)。添加后它会注册为这些扩展名的默认导入器,之后就能像普通资源一样处理。
先转换成 FBX 再导入,和直接导入 GLB,哪种更好?
如果手头已经有 GLB,不经转换直接用 glTFast 读取,步骤更少,也不容易丢失颜色和纹理。另一方面,如果整个团队的交付格式统一为 FBX,或者需要交换带动画的数据,选择 FBX 也是合理的判断。该格式的特性在GLB文件是什么?打开方式、用途与转换方法通俗讲解中有讲解。
可以在运行时(游戏中)读取 GLB 吗?
可以。glTFast 不仅支持在编辑器中导入,也支持在运行时读取。可以实现在应用内显示用户自带模型之类的设计。不过读取处理的异步化和错误处理需要自己实现,因此稳妥的做法是先通过编辑器导入确认显示效果,再推进运行时支持。
总结
在 Unity 中处理 GLB 的步骤可以归纳为 3 步:① 通过 Package Manager 添加官方包 com.unity.cloud.gltfast → ② 将 GLB 复制到 Assets → ③ 在 Inspector 中确认警告并放置到场景中。Unity 默认无法读取 GLB 是规格使然,只要安装一个包,之后就是标准的操作。
如果遇到问题,几乎都出在材质与渲染管线的匹配上。显示洋红色就查着色器,纯黑就查灯光,纹理缺失就查 .gltf 的附带文件——这样逐一排查,大多能在短时间内解决。如果打算让导入后的模型“动起来”,还需要另外准备骨骼和绑定,请在如何在Unity中把2D角色插画3D化|转换、导入与让角色动起来的条件中确认整体流程。




