版本:Unity 6 (6000.0)
语言:English
使用材质属性值设置着色器变量
通过分支和关键字更改着色器的工作方式

在 Inspector 窗口中控制材质属性

在 Unity 编辑器中,您可以控制材质属性在Inspector一个 Unity 窗口,显示当前选定的 GameObject、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
窗口中的显示方式。最简单的方法是使用MaterialPropertyDrawer

对于更复杂的需求,您可以使用MaterialEditorMaterialPropertyShaderGUI类。

使用自定义编辑器

使用自定义编辑器来显示 Unity 无法使用其默认材质 Inspector 显示的数据类型,或定义自定义控件或数据验证。

ShaderLabUnity 用于定义着色器对象结构的语言。 更多信息
参见 术语表
中,您可以为所有渲染管线一系列操作,获取场景的内容并在屏幕上显示。Unity 允许您选择预建的渲染管线,或编写您自己的。 更多信息
参见 术语表
分配自定义编辑器。为此,您可以在 Shader 块内放置一个 CustomEditor 块。您还可以根据可脚本化的渲染管线为渲染管线分配不同的自定义编辑器,方法是在 Shader 块内放置一个 CustomEditorForRenderPipeline 块。如果您的代码同时包含 CustomEditorCustomEditorForRenderPipeline 块,则特定于渲染管线的块将覆盖 CustomEditor 块。

为着色器资源创建自定义编辑器类

要为表示给定着色器对象Shader 类的实例,着色器对象是着色器程序和 GPU 指令以及告知 Unity 如何使用它们的容器。将它们与材质一起使用以确定场景的外观。 更多信息
参见 术语表
着色器在 GPU 上运行的程序。 更多信息
参见 术语表
资源定义自定义编辑器,您可以创建一个从 ShaderGUI 类继承的脚本。将您的脚本放在 Assets 文件夹中的名为 Editor 的文件夹中。

脚本应遵循以下格式

using UnityEditor;

public class ExampleShaderGUI : ShaderGUI 
{
    public override void OnGUI (MaterialEditor materialEditor, MaterialProperty[] properties)
    {
        // Custom code that controls the appearance of the Inspector goes here

        base.OnGUI (materialEditor, properties);
    }
}

启用默认自定义编辑器

此示例代码演示了使用 CustomEditor 块为着色器资源指定默认自定义编辑器的语法,然后使用 CustomEditorForRenderPipeline 块为特定渲染管线资源指定两个其他自定义编辑器。

Shader "Examples/UsesCustomEditor"
{
    // The Unity Editor uses the class ExampleCustomEditor to configure the Inspector for this shader asset
    CustomEditor "ExampleShaderGUI"
    CustomEditorForRenderPipeline "ExampleRenderPipelineShaderGUI" "ExampleRenderPipelineAsset"
    CustomEditorForRenderPipeline "OtherExampleRenderPipelineShaderGUI" "OtherExampleRenderPipelineAsset"

    SubShader
    {
        // Code that defines the SubShader goes here.

        Pass
        {                
              // Code that defines the Pass goes here.
        }
    }
}

其他资源

使用材质属性值设置着色器变量
通过分支和关键字更改着色器的工作方式