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