Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


RangeProperty

Draw a range slider for a range shader property.
Read time 4 minutesLast updated 6 days ago

Definition

  • Type: Method
  • Namespace: UnityEditor
  • Assembly: UnityEditor.CoreModule

RangeProperty(MaterialProperty, string)

Draw a range slider for a range shader property.
public float RangeProperty(MaterialProperty prop, string label)

Parameters

The property to edit.

label

Label for the property.

Returns

Type

Description

float

Remarks

To create a custom material editor, first you need to create the custom editor class and save it in the Assets/Editor folder, then reference the class name in your shader. For example:
CustomEditor "MaterialRangePropertyExample"
Here is an example showing a Range slider, affecting the shader's Glossiness property:
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( ); }}
Here is a similar example, using the Rect parameter to position and size the slider control within the custom material editor pane:
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( ); }}
This is what the example editor pane looks like:
MaterialEditorRangeProperty (RangeProperty)
Example material editor in Inspector.

RangeProperty(Rect, MaterialProperty, string)

Draw a range slider for a range shader property.
public float RangeProperty(Rect position, MaterialProperty prop, string label)

Parameters

position

Position and size of the range slider control.

The property to edit.

label

Label for the property.

Returns

Type

Description

float

Remarks

To create a custom material editor, first you need to create the custom editor class and save it in the Assets/Editor folder, then reference the class name in your shader. For example:
CustomEditor "MaterialRangePropertyExample"
Here is an example showing a Range slider, affecting the shader's Glossiness property:
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( ); }}
Here is a similar example, using the Rect parameter to position and size the slider control within the custom material editor pane:
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( ); }}
This is what the example editor pane looks like:
MaterialEditorRangeProperty (RangeProperty)
Example material editor in Inspector.

RangeProperty(string, string, float, float)

Draw a range slider for a range shader property.
Warning
Deprecated. Use RangeProperty with MaterialProperty instead.
public float RangeProperty(string propertyName, string label, float v2, float v3)

Parameters

propertyName


label

Label for the property.


Returns

Type

Description

float

Remarks

To create a custom material editor, first you need to create the custom editor class and save it in the Assets/Editor folder, then reference the class name in your shader. For example:
CustomEditor "MaterialRangePropertyExample"
Here is an example showing a Range slider, affecting the shader's Glossiness property:
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( ); }}
Here is a similar example, using the Rect parameter to position and size the slider control within the custom material editor pane:
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( ); }}
This is what the example editor pane looks like:
MaterialEditorRangeProperty (RangeProperty)
Example material editor in Inspector.