Version: 2020.3
ShaderLab:分配回退
ShaderLab:定义子着色器

ShaderLab:指定自定义编辑器

This page contains information on using a CustomEditor block in your ShaderLab code to assign custom editors.

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

渲染管线兼容性

功能名称 内置渲染管线 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP
ShaderLab: CustomEditor block

Using CustomEditor blocks

In ShaderLab, you can assign a custom editor for all render pipelines. To do this, you can place a CustomEditor block inside a Shader block.

签名 功能
CustomEditor “[custom editor class name]” Unity uses the custom editor defined in the named class.

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

要为代表给定 Shader 对象的着色器资源定义一个自定义编辑器,您需要创建一个继承自 ShaderGUI 类的脚本。请在您的 Assets 文件夹下,将您的脚本放在名为 Editor 的文件夹中。

脚本应遵循以下格式:

using UnityEditor;

public class ExampleShaderGUI : ShaderGUI 
{
    public override void OnGUI (MaterialEditor materialEditor, MaterialProperty[] properties)
    {
        // 此处是控制 Inspector 外观的自定义代码

        base.OnGUI (materialEditor, properties);
    }
}

示例

This example code demonstrates the syntax for specifying a default custom editor for a shader asset using the CustomEditor block.

Shader "Examples/UsesCustomEditor"
{
    // The Unity Editor uses the class ExampleCustomEditor to configure the Inspector for this shader asset
    CustomEditor "ExampleShaderGUI"
    
    SubShader
    {
        // Code that defines the SubShader goes here.

        Pass
        {                
              // Code that defines the Pass goes here.
        }
    }
}
ShaderLab:分配回退
ShaderLab:定义子着色器