Описание
Абстрактный класс для определения пользовательского графического интерфейса для свойств шейдера и для расширения предварительного просмотра материала.
Наследуйте от этого класса для управления представлением свойств шейдера. Чтобы шейдер мог использовать этот настраиваемый графический интерфейс, используйте свойство CustomEditor в шейдере. Обратите внимание, что CustomEditor также можно использовать для классов, производных от MaterialEditor (ищите: Пользовательские редакторы материалов). Примечание. Только подход ShaderGUI работает с материалами Substance, поэтому это рекомендуемый подход к пользовательскому графическому интерфейсу для шейдеров. Смотрите ShaderGUI.OnGUI, ShaderGUI.OnMaterialPreviewGUI, ShaderGUI.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 { redify ? "REDIFY_ON" : "REDIFY_OFF" };
targetMat.shaderKeywords = keywords.ToArray();
EditorUtility.SetDirty(targetMat);
}
}
}
Публичные Методы
AssignNewShaderToMaterial | Этот метод вызывается, когда для Материала выбран новый шейдер. |
OnClosed | Этот метод вызывается при закрытии ShaderGUI. |
OnGUI | Чтобы определить собственный графический интерфейс шейдера, используйте методы materialEditor для отображения элементов управления для массива свойств. |
OnMaterialPreviewGUI | Переопределение для расширения рендеринга области предварительного просмотра или полной замены предварительного просмотра (без вызова base.OnMaterialPreviewGUI). |
OnMaterialPreviewSettingsGUI | Переопределение для расширения функциональности панели инструментов области предварительного просмотра или полной замены панели инструментов без вызова base.OnMaterialPreviewSettingsGUI. |
Статические Методы
FindProperty | Находит свойства шейдера. |