[Unity3D]編輯器擴充套件之陣列或List顯示
阿新 • • 發佈:2019-01-01
之前一直使用迴圈的方式建立,現在找到了一種更簡便的方法,效果和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();
}
}
}
}