label | 属性的标签。 |
prop | 要编辑的属性。 |
position | 范围滑块控件的位置和大小。 |
为范围着色器属性绘制范围滑块。
要创建自定义材质编辑器,首先需要创建自定义编辑器类并将其保存在 Assets/Editor 文件夹中,然后在着色器中引用类名。例如
CustomEditor "MaterialRangePropertyExample"
以下示例显示了一个范围滑块,它会影响着色器的 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( ); } }
示例编辑器窗格如下所示
检查器中的示例材质编辑器。