Unity写Inspector的拓展脚本数据不会保存问题

为脚本编写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);
        }
}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值