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