牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-02-05 投稿人: 浏览次数:5109

  之前一直使用循环的方式创建,现在找到了一种更简便的方法,效果和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();
            }
        }
    }
}

这里写图片描述

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。