Unity3D:ShaderLab-指定自定义编辑器

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

ShaderLab:指定自定义编辑器

本页面包含有关在您的 ShaderLab 代码中使用 CustomEditorCustomEditorForRenderPipeline 块来指定自定义编辑器 的信息。

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

渲染管线兼容性

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

使用 CustomEditor 和 CustomEditorForRenderPipeline 代码块

在 ShaderLab 中,您可以为所有渲染管线指定一个自定义编辑器。为此,您可以在 Shader 代码块中放置一个 CustomEditor 代码块。您还可以为基于可编程渲染管线的渲染管线指定不同的自定义编辑器,方法是在 Shader 代码块中放置一个 CustomEditorForRenderPipeline 代码块。如果您的代码同时包含 CustomEditorCustomEditorForRenderPipeline 块,则特定于渲染管线的块会覆盖 CustomEditor 块。

签名功能
CustomEditor “[custom editor class name]”Unity 使用在命名类中定义的自定义编辑器,除非它被 CustomEditorForRenderPipeline 代码块覆盖。
CustomEditorForRenderPipeline “[custom editor class name]” “[render pipeline asset class name]”当活动渲染管线资源是命名类型时,Unity 使用该命名类中定义的自定义编辑器。

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

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

脚本应遵循以下格式:

using UnityEditor;

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

        base.OnGUI (materialEditor, properties);
    }
}

示例

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

Shader "Examples/UsesCustomEditor"
{
    // Unity 编辑器使用 ExampleCustomEditor 类为此着色器资源配置
    CustomEditor "ExampleShaderGUI"
    CustomEditorForRenderPipeline "ExampleRenderPipelineShaderGUI" "ExampleRenderPipelineAsset"
    CustomEditorForRenderPipeline "OtherExampleRenderPipelineShaderGUI" "OtherExampleRenderPipelineAsset"

    SubShader
    {
        // 此处是定义子着色器的代码。

        Pass
        {                
              // 此处是定义子通道的代码。
        }
    }
}

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:ShaderLab-分配回退 (mvrlink.com)

下一篇:Unity3D:ShaderLab-定义子着色器 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号