版本: Unity 6 (6000.0)
语言英语
  • C#

ShaderGUI

UnityEditor 中的类

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

描述

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

从此类派生以控制应如何呈现着色器属性。要让着色器使用此自定义 GUI,请在着色器中使用“CustomEditor”属性。请注意,CustomEditor 也可以用于从 MaterialEditor 派生的类(搜索:自定义材质编辑器)。注意:只有 ShaderGUI 方法适用于 Substance 材质,因此,这是用于着色器自定义 GUI 的推荐方法。参见 ShaderGUI.OnGUIShaderGUI.OnMaterialPreviewGUIShaderGUI.OnMaterialPreviewSettingsGUI

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 的方法来渲染属性数组的控件。
OnMaterialPreviewGUI覆盖以扩展预览区域的渲染,或完全替换预览(不调用 base.OnMaterialPreviewGUI)。
OnMaterialPreviewSettingsGUI覆盖以扩展预览区域工具栏的功能,或完全替换工具栏(不调用 base.OnMaterialPreviewSettingsGUI)。
ValidateMaterial当用户使用此 ShaderGUI 将材质加载到内存或更改检查器中的值时,编辑器会调用此方法。

静态方法

FindProperty查找着色器属性。