资产定义
材质资产(Material Asset)是在 SandMod 游戏编辑器中的 项目窗口(Project)内创建的,或者导入 网格(Mesh)模型的时候系统会根据模型的材质信息自动生成,材质资产用于描述物体表面外观的信息,以及决定将该信息分配给哪些物体。材质资产生成后将在 项目窗口(Project)对应项目文件夹中查看和使用,该资产样式如图:
创建资产
从 项目窗口(Project) 中创建菜单或从 项目窗口(Project) 中创建 材质资产(Material Asset)。
方法一:
在 项目窗口 中,点击 添加(+) 然后选择 材质(Material)。

方法二:
在 项目窗口 中右键点击空白处,然后依次选择 创建(Create)> 材质( Material )。

资产导入
当您导入的 网格(Mesh)模型带有 材质(Material)信息,导入该模型后系统会自动根据模型的材质信息生成材质资产。

模型导入与材质导入的关系示例。
值得注意的是,外部导入的模型的材质信息默认储存在引用 默认着色器(Engine/Default)的 默认材质(Default),因此 SandMod 只会读取默认材质支持的 材质属性(Property),默认材质所支持的材质属性请参阅 内置着色器 章节及其子章节。
编辑资产
如果您需要编辑 材质资产(Material Asset),您可以在 项目窗口(Project)中点击选中材质资产,此时在 检视窗口(Inspector)中即可查看并编辑该材质资产的属性。

在 检视窗口(Inspector)中,您可以看到材质资产的以下可编辑属性类目:
| 名称 | 描述 |
| 着色器(Shader) | 新创建和外部导入的材质默认都是使用内置着色器 默认着色器(Engine/Default),您可以在此属性中配置与此材质引用的 着色器(Shader)。值得注意的是,当前版本中您只能通过引用列表中指定材质引用的着色器,引用列表中每个着色器都会显示 name 命令定义的命名。 |
| 标签(Tags) | 材质标签类目中包含了所有材质都会拥有的属性,当前版本材质支持的标签请参阅 材质标签 小节。 |
| 关键字(Keywords) | 检查是否为此材质启用了指定着色器关键字。 |
| 材质属性(Properties) | 该类目中显示的 材质属性(Property)取决于该材质引用的 着色器(Shader)使用 property 命令定义的内容。 |
材质标签
| 名称 | 描述 |
| 渲染队列(Render Queue) | 选择渲染队列。材质的 着色器(Shader)确定默认渲染队列值,您可以在着色器中使用 renderqueue 命令定义。 |
资产预览
您可以在 项目窗口(Project)中点击选中 材质资产(Material Asset)后在 检视窗口(Inspector)底部查看材质预览。

如果预览窗口没有显示,您可以拖动 检视窗口(Inspector)底部的 预览窗口(Preview)将其显示,并可通过拖动 预览窗口(Preview)的顶部调整窗口的大小。

资源信息窗口(Resource Information Window)用于切换角度预览材质实例化效果,在预览材质时能进行以下操作:
- 旋转镜头:长按鼠标左键并拖动鼠标,可以移动观察材质的角度。

- 切换预览网格:点击 切换网格(Mesh Switching) 按钮,可以切换不同形状的 网格(Mesh)查看材质的显示效果。

引用资产
材质资产(Material Asset)的引用本质上是材质实例化的过程,关于引用材质资产的具体方法和逻辑,请参阅 材质实例化 章节。
资产右键菜单
在 项目窗口(Project)中,鼠标指向材质资产,并点击鼠标右键,即会打开材质资产对应的上下文菜单,在上下文菜单中您可以对此材质资产进行以下内容的编辑。

| 名称 | 描述 |
| 在资源管理器中显示(Show In Explorer) | 在电脑的资源管理器上打开选中的材质资产。 |
| 复制(Copy) | 复制所选材质资产至剪贴板。 |
| 剪切(Cut) | 剪切所选材质资产至剪贴板,与复制不同的是,剪切后的材质资产将不再出现于原路径下。 |
| 复制并粘贴(Duplicate) | 在所选的材质资产路径下克隆一份所选的材质资产。 |
| 重命名(Rename) | 使对象名称可编辑,以便进行更改。按 Enter 键以保存更改,或按 Esc 键以取消重命名。 |
| 删除(Delete) | 删除选中的材质资产。 |
| 上传资源(Upload Asset) | 将选中的材质资产上传至资源商店,具体上传方法请参阅 上传资源 章节。 |
| 复制资源 ID(Copy Asset ID) | 复制选中的材质资产的 ID 至剪贴板中,您可以通过 Resources.Load(Type,ID) 代码,直接通过此 ID 将材质以 Material 类型动态引用。 |
| 复制路径(Copy Path) | 以 Type Script 语法的方式,创建选中的材质资产对象从 Assets 目录下的路径在剪贴板中。 |
