Version: 2017.3

ShaderGUI

class in UnityEditor

切换到手册

描述

从中派生内容的抽象类,用于定义着色器属性的自定义 GUI 以及扩展材质预览。

从此类派生以控制应该如何显示着色器属性。对于要使用此自定义 GUI 的着色器,请使用着色器中的“CustomEditor”属性。请注意,CustomEditor 也可以用于从 MaterialEditor 派生的类(搜索:自定义材质编辑器)。注意:只有 ShaderGUI 方法适用于 Substance 材质,因此这是着色器自定义 GUI 的推荐方法。 请参阅 ShaderGUI.OnGUIShaderGUI.OnMaterialPreviewGUIShaderGUI.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为某个材质选择新着色器时调用此方法。
OnClosed当 ShaderGUI 正在关闭时调用此方法。
OnGUI要定义自定义着色 GUI,请使用 materialEditor 的方法为properties 数组渲染控件。
OnMaterialPreviewGUI覆盖以扩展预览区域的渲染,或通过不调用 base.OnMaterialPreviewGUI 完全替代预览。
OnMaterialPreviewSettingsGUI覆盖以扩展预览区域工具栏的功能,或通过不调用 base.OnMaterialPreviewSettingsGUI 完全替代工具栏。

静态函数

FindProperty查找着色器属性。