版本: Unity 6 (6000.0)
语言English
  • C#

MaterialEditor.RangeProperty

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public float RangeProperty(MaterialProperty prop, string label);

声明

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

参数

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

示例编辑器窗格如下所示


检查器中的示例材质编辑器。