游戏中的许多材质可能是一个来源的变体——具有各种配色方案的服装、损坏和未损坏的场景版本、闪亮和风化的道具实例。为了帮助您管理和维护这些材质,材质变体解决了复制材料的特定缺点,如此表所示。
| 复制的材质 | 材质变体 |
|---|---|
| 如果源材质发生更改,则不会自动更改。 | 如果父项发生更改,则会自动更改。 |
| 要将更改复制到其源材质中的副本,必须手动调整源材质。 | 只需单击两次鼠标即可将更改从子材质复制到其父材质。 |
| 无法限制对副本属性的更改。 | 可以将一个或多个属性锁定在材质或材质变体上,以防止在其子项中修改这些属性。 |
| 无法将副本与不同的源相关联。 | 可以重新为材质变体设置父项。 |
可以从材质和其他材质变体创建材质变体。还可以将材质变体转换为材质。要在具有各种不同材质的变体中使用覆盖,可对该变体的父项进行更改。
有关如何创建和转换材质变体的信息,请参阅创建、修改和应用材质变体。
请参阅材质变体继承以了解材质变体层级视图的说明。
可从任何材质创建材质变体,包括使用着色器图 (Shader Graph) 制作或从资源商店 (Asset Store) 下载的材质变体。有关如何从着色器创建材质变体的详细信息,请参阅创建、修改和应用材质变体。
覆盖是对材质变体的属性所做的更改。您可以一次还原一个覆盖或一次性还原所有覆盖。Unity 不会通过撤消堆栈处理还原,这意味着可以在不撤消任何其他更改的情况下还原某个覆盖。
有关如何识别和还原覆盖的详细信息,请参阅创建、修改和应用材质变体。
Unity 可防止祖先删除和循环依赖关系。如果尝试删除材质变体的父项,Unity 会发出警告,提醒您为子项选择新父项或为其重新设置父项。
有关材质变体层级视图和继承错误消息的详细信息,请参阅材质变体继承。
可以使用材质变体 API 访问材质变体功能,以进行复杂或大型的操作。
请参阅 Material 和 MaterialEditor API 文档,了解如何在脚本中使用材质变体。
预制件变体和材质变体具有相同的功能、基本概念和工作流程。它们之间有两个主要区别:
材质变体的设计目的不是解决优化和可扩展性问题。此外,无法使用材质变体在播放器运行时更改材质。