为脚本编写Inspector拓展脚本
首先创建一个脚本并定义公开变量或属性
public class ImageScan : MonoBehaviour
{
//枚举类型
public SettingSize m_SizeType = SettingSize.Auto;
//颜色类型
public Color m_ImageColor = Color.white;
//坐标类型
public Vector2 m_Size = Vector2.one;
//浮点数类型
public float m_MaxMultiple = 1.5f;
public enum SettingSize
{
Auto,
Manual
}
}
创建完脚本后我们需要在创建一个拓展脚本,拓展脚本需要放到Editor文件夹下方
*
网上有很多拓展文件编辑的方法都是使用EditorGUILayout.PropertyField方法来编辑显示的,这个方法仅仅只能起到一个显示的作用,并不能起到保存的作用。
保存的话就得另外调用一行代码。
很多人说调用EditorUtility.SetDirty()方法就能将数据保存起来,但在实际的使用过程中并没有有效地起到保存数据的作用。
下面列出我所使用的且有效的存储数据的有效方式
方法 一
方法一是官方提供的存储方式
[CustomEditor(typeof(ImageScan))]
public class ImageScanEditor : Editor
{
private SerializedProperty isfloat;
void OnEnable()
{
isfloat = serializedObject.FindProperty("m_MaxMultiple");
}
public override void OnInspectorGUI()
{
//显示数据
EditorGUILayout.PropertyField(isfloat);
//保存数据
serializedObject.ApplyModifiedProperties();
}
}
方法二
方法二是直接对代码的属性进行赋值已达到存储属性数据的目的。
简单粗暴。
[CustomEditor(typeof(ImageScan))]
public class ImageScanEditor : Editor
{
private ImageScan m_ImageScan;
public override void OnInspectorGUI()
{
m_ImageScan = (ImageScan)target;
//枚举类型的显示并保存的方式
m_ImageScan.m_SizeType = (ImageScan.SettingSize)EditorGUILayout.EnumPopup("Type", m_ImageScan.m_SizeType);
//颜色类型的显示并保存的方式
m_ImageScan.m_ImageColor = EditorGUILayout.ColorField("Color", m_ImageScan.m_ImageColor);
//二维坐标的显示并保存的方式
m_ImageScan.m_Size = EditorGUILayout.Vector2Field("Target Ratio", m_ImageScan.m_Size);
//浮点数的显示并保存的方式
m_ImageScan.m_MaxMultiple = EditorGUILayout.FloatField("Max Multiple", m_ImageScan.m_MaxMultiple);
}
}