1. 程式人生 > >[Unity3D]編輯器擴充套件之陣列或List顯示

[Unity3D]編輯器擴充套件之陣列或List顯示

  之前一直使用迴圈的方式建立,現在找到了一種更簡便的方法,效果和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(); } } } }

這裡寫圖片描述