112 lines
4.4 KiB
C#
112 lines
4.4 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
using UnityEditor;
|
|||
|
|
using UnityEditorInternal;
|
|||
|
|
|
|||
|
|
|
|||
|
|
namespace SuperTreeView
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
[CustomEditor(typeof(TreeView))]
|
|||
|
|
public class TreeViewEditor : Editor
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
SerializedProperty mExpandAnimType;
|
|||
|
|
SerializedProperty mItemPrefabDataList;
|
|||
|
|
SerializedProperty mExpandUseTime;
|
|||
|
|
SerializedProperty mExpandClipMoveSpeed;
|
|||
|
|
SerializedProperty mItemPadding;
|
|||
|
|
SerializedProperty mItemIndent;
|
|||
|
|
SerializedProperty mChildTreeListPadding;
|
|||
|
|
|
|||
|
|
protected virtual void OnEnable()
|
|||
|
|
{
|
|||
|
|
mExpandAnimType = serializedObject.FindProperty("mExpandAnimType");
|
|||
|
|
mItemPrefabDataList = serializedObject.FindProperty("mItemPrefabDataList");
|
|||
|
|
mExpandUseTime = serializedObject.FindProperty("mExpandUseTime");
|
|||
|
|
mExpandClipMoveSpeed = serializedObject.FindProperty("mExpandClipMoveSpeed");
|
|||
|
|
mItemPadding = serializedObject.FindProperty("mItemPadding");
|
|||
|
|
mItemIndent = serializedObject.FindProperty("mItemIndent");
|
|||
|
|
mChildTreeListPadding = serializedObject.FindProperty("mChildTreeListPadding");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ShowItemPrefabDataList()
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.PropertyField(mItemPrefabDataList, new GUIContent("ItemPrefabList"), false);
|
|||
|
|
/*if (mItemPrefabDataList.isExpanded == false)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}*/
|
|||
|
|
EditorGUI.indentLevel += 1;
|
|||
|
|
if (GUILayout.Button("Add New"))
|
|||
|
|
{
|
|||
|
|
mItemPrefabDataList.InsertArrayElementAtIndex(mItemPrefabDataList.arraySize);
|
|||
|
|
}
|
|||
|
|
int removeIndex = -1;
|
|||
|
|
EditorGUILayout.PropertyField(mItemPrefabDataList.FindPropertyRelative("Array.size"));
|
|||
|
|
for (int i = 0; i < mItemPrefabDataList.arraySize; i++)
|
|||
|
|
{
|
|||
|
|
SerializedProperty itemData = mItemPrefabDataList.GetArrayElementAtIndex(i);
|
|||
|
|
SerializedProperty mInitCreateCount = itemData.FindPropertyRelative("mInitCreateCount");
|
|||
|
|
SerializedProperty mItemPrefab = itemData.FindPropertyRelative("mItemPrefab");
|
|||
|
|
EditorGUILayout.BeginHorizontal();
|
|||
|
|
EditorGUILayout.PropertyField(itemData,false);
|
|||
|
|
if (GUILayout.Button("Remove"))
|
|||
|
|
{
|
|||
|
|
removeIndex = i;
|
|||
|
|
}
|
|||
|
|
EditorGUILayout.EndHorizontal();
|
|||
|
|
if (itemData.isExpanded == false)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
mItemPrefab.objectReferenceValue = EditorGUILayout.ObjectField("ItemPrefab", mItemPrefab.objectReferenceValue, typeof(GameObject), true);
|
|||
|
|
mInitCreateCount.intValue = EditorGUILayout.IntField("InitCreateCount", mInitCreateCount.intValue);
|
|||
|
|
EditorGUILayout.Space();
|
|||
|
|
EditorGUILayout.Space();
|
|||
|
|
}
|
|||
|
|
if(removeIndex >= 0)
|
|||
|
|
{
|
|||
|
|
mItemPrefabDataList.DeleteArrayElementAtIndex(removeIndex);
|
|||
|
|
}
|
|||
|
|
EditorGUI.indentLevel -= 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void OnInspectorGUI()
|
|||
|
|
{
|
|||
|
|
serializedObject.Update();
|
|||
|
|
TreeView tTreeView = serializedObject.targetObject as TreeView;
|
|||
|
|
if(tTreeView == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
ShowItemPrefabDataList();
|
|||
|
|
EditorGUILayout.Space();
|
|||
|
|
EditorGUILayout.PropertyField(mExpandAnimType, new GUIContent("ExpandAnimType"));
|
|||
|
|
|
|||
|
|
if (tTreeView.ExpandAnimateType == ExpandAnimType.Clip)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.PropertyField(mExpandClipMoveSpeed, new GUIContent("ExpandClipMoveSpeed"));
|
|||
|
|
}
|
|||
|
|
else if(tTreeView.ExpandAnimateType == ExpandAnimType.Scale)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.PropertyField(mExpandUseTime, new GUIContent("ExpandUseTime"));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space();
|
|||
|
|
EditorGUI.BeginChangeCheck();
|
|||
|
|
EditorGUILayout.PropertyField(mItemPadding, new GUIContent("ItemPadding"));
|
|||
|
|
EditorGUILayout.PropertyField(mItemIndent, new GUIContent("ItemIndent"));
|
|||
|
|
EditorGUILayout.PropertyField(mChildTreeListPadding, new GUIContent("ChildTreeListPadding"));
|
|||
|
|
if (EditorGUI.EndChangeCheck())
|
|||
|
|
{
|
|||
|
|
tTreeView.NeedRepositionAll = true;
|
|||
|
|
}
|
|||
|
|
serializedObject.ApplyModifiedProperties();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|