ShaderLab: menetapkan fallback
ShaderLab: mendefinisikan SubShader

ShaderLab: menetapkan editor kustom

Halaman ini berisi informasi tentang menggunakan blok CustomEditor atau CustomEditorForRenderPipeline pada kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
Lihat di Glossary
Anda untuk menetapkan editor kustom.

Gunakan editor kustom untuk menampilkan jenis data yang Unity tidak dapat ditampilkan menggunakan bahan default InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
, atau untuk menentukan kontrol kustom atau validasi data.

Kompatibilitas pipa Render

Feature name Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP
ShaderLab: CustomEditor block Yes Yes Yes Yes
ShaderLab: CustomEditorForRenderPipeline block No Yes Yes Yes

Menggunakan CustomEditor dan CustomEditorForRender Blok pipa

Di ShaderLab, Anda dapat menetapkan editor kustom untuk semua pipa render. Untuk melakukan ini, Anda dapat menempatkan blok CustomEditor di dalam blok Shader. Anda juga dapat menetapkan editor kustom yang berbeda untuk membuat pipa berdasarkan pipa Render Scriptable dengan menempatkan blok CustomEditorForRenderPipeline di dalam blok Shader. Jika kode Anda mengandung blok CustomEditor dan CustomEditorForRenderPipeline, render pipeline spesifik satu overrides CustomEditor satu.

Signature Function
CustomEditor “[nama kelas editor kustom]” Unity menggunakan editor kustom yang didefinisikan dalam kelas bernama, kecuali ini ditimidasi oleh blok CustomEditorForRenderPipeline.
CustomEditorForRenderPipeline “[nama kelas editor kustom]” “[nama kelas aset pipa render]” Ketika Render Pipeline Asset aktif adalah tipe bernama, Unity menggunakan editor kustom yang didefinisikan dalam kelas bernama.

Membuat kelas editor kustom untuk aset naungan

Untuk mendefinisikan editor kustom untuk aset shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
yang mewakili Shader objectContoh kelas Shader, objek Shader adalah wadah untuk program naungan dan instruksi GPU, dan informasi yang memberi tahu Unity bagaimana menggunakannya. Gunakan mereka dengan bahan untuk menentukan penampilan adegan Anda. More info
Lihat di Glossary
yang diberikan, Anda membuat skrip yang mengherankan dari kelas ShaderGUI. Tempatkan skrip Anda dalam folder bernama Editor, di folder Assets Anda.

Script harus mengikuti format ini:

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);
    }
}

Examples

Kode contoh ini menunjukkan sintaks untuk menentukan editor kustom default untuk aset naungan menggunakan blok CustomEditor, dan kemudian menentukan dua editor kustom tambahan untuk Aset Pipa Render tertentu menggunakan blok 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.
        }
    }
}
ShaderLab: menetapkan fallback
ShaderLab: mendefinisikan SubShader