v2.0.0
Turian 2.0.0 引入了按子网格划分的材质。导入的 glTF/GLB 模型现在会烹饪 每一个 Mesh 和 Primitive(1.x 只保留第一个 Mesh 的第一个 Primitive),每 个子网格都可以绑定自己的材质。
发生了什么变化
- 烹饪后的网格格式(TMSH v2) —— 网格资源新增了子网格表(每个 Primitive 的索引范围和材质槽位)。
- 场景文件 —— 网格渲染器字段
material_guid(单个字符串)变为material_guids(数组)。 MeshRendererComponent—— 单一的material字段变为materials数组(最多 32 个条目)加上一个material_count,按位置绑定:materials[i]渲染子网格i。- 导入行为 —— 包含多个 Mesh/Primitive 的 glTF 和 GLB 文件会被完整导 入。OBJ 导入保持不变(单一子网格)。
谁会受到影响
任何场景中为网格渲染器分配了材质的项目,以及读写
MeshRendererComponent.material 的游戏代码。
升级步骤
1. 升级到 2.0.0
下载 2.0.0 SDK。 SDK 是自包含的,因此你可以在迁移期间让 1.x SDK 与之并存(参见 版本发布策略)。
2. 让资源重新烹饪
导入器版本的提升会强制每个已导入的模型自动重新烹饪为新的网格格式。你不需 要做任何事——只需预期在模型较多的项目中,第一次打开项目(或第一次 CLI 构建)会花费更长时间。
3. 迁移场景文件
旧场景仍然可以加载:遗留的 material_guid 字段会在内存中被转换,并记录一
条警告。要在整个项目中一次性持久化这一转换:
turian-cli migrate path/to/project
该命令会扫描每一个场景,只重写仍在使用遗留字段的场景,并报告它所修改的内 容。提交生成的差异。(在 Studio 中重新保存场景同样会完成迁移——CLI 只是它 的批量版本。)
4. 更新游戏代码
如果你的代码直接分配或读取了渲染器的材质:
// 1.x
renderer.material = my_material_ref;
// 2.0.0
renderer.materials[0] = my_material_ref;
renderer.material_count = 1;
materials[i] 绑定到网格的子网格 i。没有子网格表的网格(程序化图元、OBJ
导入)会完全使用 materials[0] 渲染。未设置或越界的槽位会回退到默认材质。
5. 检查使用了导入模型的场景
那些原本就包含多个 Mesh 或 Primitive 的模型,此前一直被 1.x 静默截断——重 新烹饪后它们会被完整渲染。请复查围绕这些模型搭建的场景:之前从未见过的 几何体现在可能会出现,其材质槽位可以在 Inspector 中分配。
之后请勿降级
2.0.0 保存的场景会存储 material_guids,而 1.x 不会读取它——用旧版本打开
已迁移的项目并保存,会静默丢弃材质分配。请只朝一个方向迁移项目一次;如果
需要先行试验,请在分支上进行。