Skip to content

简介

本章节主要介绍 SandMod 中实例化材质,以及材质实例化的规则。

创建材质实例

材质无法单独在场景中实例化,您可以在 渲染器(Renderer)相关的 组件(Component)上引用材质或者在 粒子特效系统(Partical System)而创建材质实例。

网格相关渲染器的引用方法

网格渲染器(Mesh Renderer)或 蒙皮网格渲染器(Skinned Mesh Renderer)组件(Component)中指定 材质资产(Material Asset),即可将材质在 3D 游戏场景中的网格上引用和显示。引用后该材质将会被实例化,您可以在绑定了对应组件的游戏对象上查看或编辑实例化材质的相关属性。

Material_Instances001

您也可以在 项目窗口(Project)中将材质资产拖向 场景预览窗口(Scene)中的网格物体,如此操作网格将会自动引用、实例化该材质。

Material_Instances002

其他组件的引用方法

精灵渲染(Sprite Renderer)、精灵序列渲染器(Sprite Sequence Renderer)、线条特效渲染器(Line Renderer)、拖尾特效渲染器(Trail Renderer)、粒子特效(Particle System)组件(Component)属性中都可以指定 材质资产(Material Asset),即可将材质在对应的显示效果上引用和显示。引用后该材质将会被实例化,您可以在绑定了对应组件的游戏对象上查看或编辑实例化材质的相关属性。

Material_Instances003

值得注意的是,这些渲染器和粒子特效都有专属的内置 着色器(Shader),为它们指定材质时建议材质引用对应的内置着色器。对应组件与着色器命名的对应关系可参阅下表:

组件着色器命名
精灵渲染(Sprite Renderer)Engine/Sprite
精灵序列渲染器(Sprite Sequence Renderer)
线条特效渲染器(Line Renderer)Engine/LineRender
拖尾特效渲染器(Trail Renderer)
粒子系统(Particle System)Engine/Default_Particle

关于内置着色器属性等更多的描述请参阅 内置着色器 及其子章节。

共享材质

多个 渲染器(Renderer)或粒子系统共同引用同一个 材质资产(Material Asset),SandMod 将它们共用的材质为共享材质。

Material_Instances004

共享效果

多个渲染器或粒子系统共用同一个共享材质时,您可以在 项目窗口(Project)中直接编辑该共享材质对应的 材质资产(Material Asset),这样您对材质资产的修改会同步至场景中使用了该共享材质的所有渲染器或粒子系统。

--------------
例如,场景中的树叶共用了同一个共享材质,直接编辑该材质资产的叠加颜色属性能同步改变场景中叶子的颜色。
Material_Instances005
--------------

共享材质与材质副本

当 渲染器(Renderer)或粒子系统引用了 材质资产(Material Asset),您可以选中挂载该渲染器或粒子系统的 游戏对象(Game Object),并在 检视窗口(Inspector)中查看和编辑材质属性。

Material_Instances006

值得注意的是,当您在 检视窗口(Inspector)中编辑材质属性,该材质将不会是共享材质,SandMod 会给予其改变参数前的共享材质创建材质副本,并将该材质副本分配给原引用该材质的渲染器或粒子系统。

材质副本是独立的,您对材质副本的所有修改都仅会影响当前游戏对象的显示效果,不会影响产生该材质副本的原材质资产及其共享资产。

--------------
例如,选中场景中某棵树的树叶,在 检视窗口(Inspector)中更改该树叶的叠加颜色,此时该树叶的材质已经是原共享材质产生的材质副本。
Material_Instances008

此时仅能改变该树树叶的颜色,其他共用同一个共享材质的树叶,显示效果没有受到影响。
Material_Instances009

当再次编辑树叶原引用的材质资产叠加颜色属性时,场景中其他叶子的颜色均同步改变,但是产生了材质副本的树叶对象叠加颜色没有同步变化。
Material_Instances010
--------------