[Unity3D]编辑器扩展之数组或List显示

版权声明:本文为博主原创文章,转载请注明 http://blog.csdn.net/u012741077 https://blog.csdn.net/u012741077/article/details/54884623

  之前一直使用循环的方式创建,现在找到了一种更简便的方法,效果和Inspector面板上是一模一样的。省事了ヾ(Ő∀Ő๑)ノ太好惹!

效果如下:
这里写图片描述

源码如下:

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

namespace XM.Editor
{
    public class AssetBundleCreator : EditorWindow
    {
        [MenuItem("Tools/Build Asset Bundle")]
        public static void BuildAssetBundle()
        {
            var win = GetWindow<AssetBundleCreator>("Build Asset Bundle");
            win.Show();
        }

        [SerializeField]//必须要加
        protected List<UnityEngine.Object> _assetLst = new List<UnityEngine.Object>();

        //序列化对象
        protected SerializedObject _serializedObject;

        //序列化属性
        protected SerializedProperty _assetLstProperty;


        protected void OnEnable()
        {
            //使用当前类初始化
            _serializedObject = new SerializedObject(this);
            //获取当前类中可序列话的属性
            _assetLstProperty = _serializedObject.FindProperty("_assetLst");
        }

        protected void OnGUI()
        {
            //更新
            _serializedObject.Update();

            //开始检查是否有修改
            EditorGUI.BeginChangeCheck();

            //显示属性
            //第二个参数必须为true,否则无法显示子节点即List内容
            EditorGUILayout.PropertyField(_assetLstProperty, true);

            //结束检查是否有修改
            if (EditorGUI.EndChangeCheck())
            {//提交修改
                _serializedObject.ApplyModifiedProperties();
            }
        }
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012741077/article/details/54884623