Version: 6000.3
语言: 中文
使用材质属性值设置着色器变量
使用关键字更改着色器的工作方式

在“检查器”窗口中控制材质属性

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

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

使用自定义编辑器

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

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

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

定义自定义编辑器着色器在 GPU 上运行的程序。更多信息
请参阅术语表
表示给定的资产Shader 对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
请参阅术语表
,则创建继承自 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.
        }
    }
}

其他资源

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