| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | 
							- using System.Collections.Generic;
 
- using Fort23.UTool;
 
- using UnityEditor;
 
- using UnityEngine;
 
- using Utility;
 
- namespace Mono.UI.UIComs
 
- {
 
-     [CustomEditor(typeof(CustomStateController))]
 
-     public class CustomStateControllerEditor : UnityEditor.Editor
 
-     {
 
-         private CustomStateController uIStateController;
 
-         private void OnEnable()
 
-         {
 
-             uIStateController = (CustomStateController)target;
 
-         }
 
-         public int SelectIndex
 
-         {
 
-             get { return _selectIndex; }
 
-             set
 
-             {
 
-                 if (value != _selectIndex && value >= 0)
 
-                 {
 
-                     _selectIndex = value;
 
-                     uIStateController.CurrIndex = _selectIndex;
 
-                     uIStateController.ChangeState(_selectIndex);
 
-                     Debug.Log("切换状态+" + uIStateController.data[_selectIndex].StateInfos[0].UIStateV4Datas.Count);
 
-                 }
 
-             }
 
-         }
 
-         private int _selectIndex;
 
-         private Object ObjectPrefab;
 
-         bool isInited = false;
 
-         public override void OnInspectorGUI()
 
-         {
 
-             SerializedProperty AllComsProperty = serializedObject.FindProperty("AllComs");
 
-             SerializedProperty AllComsStateTypesProperty = serializedObject.FindProperty("AllComsStateTypes");
 
-             if (uIStateController.AllComsStateTypes.Count < uIStateController.AllComs.Count)
 
-             {
 
-                 uIStateController.AllComsStateTypes.Add(CustomStateController.UIStateType.Null);
 
-             }
 
-             GUILayout.BeginHorizontal(GUI.skin.box);
 
-             _selectIndex = uIStateController.CurrIndex;
 
-             for (var i = 0; i < uIStateController.data.Count; i++)
 
-             {
 
-                 if (GUILayout.Toggle(SelectIndex == i, i.ToString()))
 
-                 {
 
-                     SelectIndex = i;
 
-                 }
 
-             }
 
-             EditorGUILayout.EndHorizontal();
 
-             EditorGUILayout.ObjectField(ObjectPrefab, typeof(Object), false);
 
-             SerializedProperty property;
 
-             EditorGUILayout.LabelField("需要保存状态数据的组件列表:");
 
-             var delList = new List<int>();
 
-             for (var i = 0; i < uIStateController.AllComs.Count; i++)
 
-             {
 
-                 GUILayout.BeginHorizontal();
 
-                 property = AllComsProperty.GetArrayElementAtIndex(i);
 
-                 property.objectReferenceValue = EditorGUILayout.ObjectField(property.objectReferenceValue, typeof(Object), true);
 
-                 uIStateController.AllComsStateTypes[i] = (CustomStateController.UIStateType)EditorGUILayout.EnumFlagsField(uIStateController.AllComsStateTypes[i]);
 
-                 if (GUILayout.Button("X"))
 
-                 {
 
-                     //将元素添加进删除list
 
-                     delList.Add(i);
 
-                 }
 
-                 GUILayout.EndHorizontal();
 
-             }
 
-             //遍历删除list,将其删除掉
 
-             foreach (var i in delList)
 
-             {
 
-                 AllComsProperty.DeleteArrayElementAtIndex(i);
 
-                 AllComsStateTypesProperty.DeleteArrayElementAtIndex(i);
 
-             }
 
-             // EditorGUILayout.LabelField("当前保存的状态数据列表:");
 
-             // for (var i = 0; i < uIStateController.data.Count; i++)
 
-             // {
 
-             //     property = AllComDatasProperty.GetArrayElementAtIndex(i);
 
-             //     EditorGUILayout.PropertyField(property);
 
-             // }
 
-             EditorGUILayout.BeginHorizontal();
 
-             if (GUILayout.Button("添加当前状态数据"))
 
-             {
 
-                 uIStateController.AddData();
 
-                 SelectIndex = uIStateController.data.Count - 1;
 
-                 Debug.Log("添加当前状态数据");
 
-                 EditorUtility.SetDirty(uIStateController.gameObject);
 
-             }
 
-             if (GUILayout.Button("保存当前状态数据"))
 
-             {
 
-                 uIStateController.SaveData();
 
-                 EditorUtility.SetDirty(uIStateController.gameObject);
 
-                 Debug.Log("保存当前状态数据");
 
-             }
 
-             if (GUILayout.Button("删除当前状态数据"))
 
-             {
 
-                 uIStateController.RemoveData(SelectIndex);
 
-                 SelectIndex = uIStateController.data.Count - 1;
 
-                 EditorUtility.SetDirty(uIStateController.gameObject);
 
-                 Debug.Log("删除当前状态数据");
 
-             }
 
-             EditorGUILayout.EndHorizontal();
 
-             var eventType = Event.current.type;
 
-             //在Inspector 窗口上创建区域,向区域拖拽资源对象,获取到拖拽到区域的对象
 
-             if (eventType == EventType.DragUpdated || eventType == EventType.DragPerform)
 
-             {
 
-                 DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
 
-                 if (eventType == EventType.DragPerform)
 
-                 {
 
-                     DragAndDrop.AcceptDrag();
 
-                     foreach (var o in DragAndDrop.objectReferences)
 
-                     {
 
-                         AddObject(AllComsProperty, o);
 
-                     }
 
-                 }
 
-                 Event.current.Use();
 
-             }
 
-             serializedObject.ApplyModifiedProperties();
 
-             serializedObject.UpdateIfRequiredOrScript();
 
-         }
 
-         private void AddObject(SerializedProperty dataProperty, Object obj)
 
-         {
 
-             int index = dataProperty.arraySize;
 
-             dataProperty.InsertArrayElementAtIndex(index);
 
-             var element = dataProperty.GetArrayElementAtIndex(index);
 
-             element.objectReferenceValue = obj;
 
-         }
 
-         private void AddStateData(CustomStateController.UIStateData data)
 
-         {
 
-             uIStateController.data.Add(data);
 
-         }
 
-     }
 
- }
 
 
  |