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 完全替代预览。
OnMaterialPreviewSettingsGUIOverride for extending the functionality of the toolbar of the preview area or completly replace the toolbar by not calling base.OnMaterialPreviewSettingsGUI.

静态函数

FindProperty查找着色器属性。