Version: 2018.1

ShaderGUI

class in UnityEditor

マニュアルに切り替える

説明

シェーダープロパティーのカスタム 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); } } }

Public 関数

AssignNewShaderToMaterialこのメソッドは新しいシェーダーが Material を選択したときに呼び出されます
OnClosedThis method is called when the ShaderGUI is being closed.
OnGUICustom Shader GUI を定義するには properties 配列の描画を制御するために materialEditor のメソッドを使用します。
OnMaterialPreviewGUIプレビュー領域のレンダリングを拡張するためにオーバーライドするか、 ( base.OnMaterialPreviewGUI を呼び出さずに)プレビューを完全に置き換えます
OnMaterialPreviewSettingsGUIプレビュー領域のツールバーの機能を拡張するためにオーバーライドするか、 ( base.OnMaterialPreviewGUI を呼び出さずに) ツールバーを完全に置き換えます

Static 関数

FindPropertyシェーダープロパティーを検索します