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 | 是 | 是 | 是 | 是 | 
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.
        }
    }
}