public float RangeProperty (MaterialProperty prop, string label);
public float RangeProperty (Rect position, MaterialProperty prop, string label);

Parámetros

labelEtiqueta para la propiedad.
propLa propiedad a editar.
positionPosición y tamaño del control deslizante de rango.

Descripción

Dibuja un control deslizante de rango para una propiedad shader de rango.

Para crear un editor de materiales personalizado, primero debe crear la clase de editor personalizado y guardarla en la carpeta Assets/Editor, y luego hacer referencia al nombre de la clase en su shader. Por ejemplo:

 CustomEditor "MaterialRangePropertyExample"

A continuación se muestra un ejemplo que muestra un control deslizante de Rango, que afecta a la propiedad Glossiness del shader:

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( ); } }

A continuación se muestra un ejemplo similar, utilizando el parámetro Rect para posicionar y dimensionar el control deslizante dentro del panel del editor de materiales personalizado:

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( ); } }

Esto es lo que parece en el panel del editor de ejemplo:


Example material editor in Inspector.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961