シェーダープロパティーのカスタム GUI を定義するためとマテリアルのプレビューを拡張するために派生する抽象クラスです。
シェーダーのプロパティーの表示方法を制御するために、このクラスを継承します。このカスタム GUI を使用するシェーダーに 'CustomEditor' プロパティーを記述することで使用します。 CustomEditor は MaterialEditor から派生するクラスにも使用することができます (検索: Custom Material Editor で検索してみてください)。注: ShaderGUI アプローチだけ Substance マテリアルで動作します。したがって、これはシェーダーのためのカスタム GUI として推奨される方法です。 以下を参照してください。 ShaderGUI.OnGUI,ShaderGUI.OnMaterialPreviewGUI,ShaderGUI.OnMaterialPreviewSettingsGUI
Shader "example" { // properties and subshaders here... // ...
CustomEditor "CustomShaderGUI" }
using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.Linq;
public class CustomShaderGUI : ShaderGUI { override public void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) { // render the shader properties using the default GUI base.OnGUI(materialEditor, properties);
// get the current keywords from the material Material targetMat = materialEditor.target as Material; string[] keyWords = targetMat.shaderKeywords;
// see if redify is set, then show a checkbox bool redify = keyWords.Contains("REDIFY_ON"); EditorGUI.BeginChangeCheck(); redify = EditorGUILayout.Toggle("Redify material", redify); if (EditorGUI.EndChangeCheck()) { // if the checkbox is changed, reset the shader keywords var keywords = new List<string> { redify ? "REDIFY_ON" : "REDIFY_OFF" }; targetMat.shaderKeywords = keywords.ToArray(); EditorUtility.SetDirty(targetMat); } } }
AssignNewShaderToMaterial | このメソッドは新しいシェーダーが Material を選択したときに呼び出されます |
OnGUI | Custom Shader GUI を定義するには properties 配列の描画を制御するために materialEditor のメソッドを使用します。 |
OnMaterialPreviewGUI | プレビュー領域のレンダリングを拡張するためにオーバーライドするか、 ( base.OnMaterialPreviewGUI を呼び出さずに)プレビューを完全に置き換えます |
OnMaterialPreviewSettingsGUI | プレビュー領域のツールバーの機能を拡張するためにオーバーライドするか、 ( base.OnMaterialPreviewGUI を呼び出さずに) ツールバーを完全に置き換えます |
FindProperty | シェーダープロパティーを検索します |