Объявление
public float RangeProperty(MaterialProperty prop, string label);public float RangeProperty(Rect position, MaterialProperty prop, string label);
Параметры
label | Этикетка для свойства. |
prop | Редактируемое свойство. |
position | Положение и размер ползунка диапазона. |
Описание
Нарисуйте ползунок диапазона для свойства шейдера диапазона.
Чтобы создать пользовательский редактор материалов, сначала необходимо создать класс пользовательского редактора и сохранить его в папке Assets/Editor, а затем указать имя класса в шейдере. Например:
CustomEditor "MaterialRangePropertyExample"
Вот пример, показывающий ползунок Range, влияющий на свойство Glossiness шейдера:
using UnityEngine;
using UnityEditor;
public class MaterialRangePropertyExample : MaterialEditor
{
public override void OnInspectorGUI( )
{
serializedObject.Update( );
SerializedProperty matShader = serializedObject.FindProperty( "m_Shader" );
if( !isVisible )
return;
Material mat = target as Material;
MaterialProperty Glossiness = GetMaterialProperty( new Object[] { mat }, "_Glossiness" );
if( Glossiness == null )
return;
EditorGUI.BeginChangeCheck( );
RangeProperty( Glossiness, "Glossiness" );
if( EditorGUI.EndChangeCheck( ) )
PropertiesChanged( );
}
}
Вот аналогичный пример использования параметра Rect для позиционирования и изменения размера ползунка на панели редактора пользовательских материалов:
using UnityEngine;
using UnityEditor;
public class MaterialRangePropertyWithRectExample : MaterialEditor
{
public override void OnInspectorGUI( )
{
serializedObject.Update( );
SerializedProperty matShader = serializedObject.FindProperty( "m_Shader" );
if( !isVisible )
return;
Material mat = target as Material;
MaterialProperty Glossiness = GetMaterialProperty( new Object[] { mat }, "_Glossiness" );
if( Glossiness == null )
return;
EditorGUI.BeginChangeCheck( );
RangeProperty( new Rect( 20, 60, 300, 20 ), Glossiness, "Glossiness" );
if( EditorGUI.EndChangeCheck( ) )
PropertiesChanged( );
}
}
Вот как выглядит панель редактора примера:
