123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Formatters.Binary;
- using UnityEditor;
- using UnityEngine;
- using WS;
- public class ProcessEditor : EditorWindow
- {
-
- private List<Module> Config = new List<Module>();
-
- private List<ModuleEditorData> EditorData = new List<ModuleEditorData>();
-
- private List<Type> ComponentTypes = new List<Type>();
-
- private Dictionary<string, EditorTypeData> EditorTypes =
- new Dictionary<string, EditorTypeData>();
-
- private string[] Components;
-
- private string path;
-
- private Vector2 pos;
-
- private string[] Modules
- {
- get { return EditorData.Select(m => m.Name).ToArray(); }
- }
-
- private int ModuleIndex;
-
- private string[] OwnTasks
- {
- get
- {
- List<string> tasks = new List<string>();
- for (int i = 0; i < EditorData.Count; i++)
- {
- tasks.AddRange(EditorData[i].VTasks.Select(t => $"{t.Id} {t.Name}"));
- }
- return tasks.ToArray();
- }
- }
- private void OnGUI()
- {
- pos = EditorGUILayout.BeginScrollView(pos);
- DrawModule();
- EditorGUILayout.EndScrollView();
- DrawSetting();
- }
- private void OnDestroy()
- {
- for (int i = 0; i < EditorData.Count; i++)
- {
- for (int j = 0; j < EditorData[i].VTasks.Count; j++)
- {
- for (int k = 0; k < EditorData[i].VTasks[j].Operates.Count; k++)
- {
- EditorData[i].VTasks[j].Operates[k].Editor.Dispose();
- }
- EditorData[i].VTasks[j].Operates.Clear();
- }
- EditorData[i].VTasks.Clear();
- }
- EditorData.Clear();
- }
-
- private void DrawModule()
- {
- for (int i = 0; i < EditorData.Count; i++)
- {
- EditorGUILayout.BeginHorizontal();
- EditorData[i].Foldout = EditorGUILayout.Foldout(
- EditorData[i].Foldout,
- EditorData[i].Name
- );
- GUILayout.Label("");
- if (EditorData[i].VTasks.Count > 0)
- {
- GUILayout.Label(GetVTaskIndex(EditorData[i].VTasks), GUILayout.Width(100));
- }
- GUILayout.Label("任务无顺序:", GUILayout.Width(70));
- EditorData[i].NoOrder = EditorGUILayout.Toggle(
- EditorData[i].NoOrder,
- GUILayout.Width(20)
- );
- GUILayout.Label("忽略任务栏:", GUILayout.Width(70));
- EditorGUI.BeginChangeCheck();
- EditorData[i].NoTaskbar = EditorGUILayout.Toggle(
- EditorData[i].NoTaskbar,
- GUILayout.Width(20)
- );
- if (EditorGUI.EndChangeCheck())
- {
- for (int x = 0; x < EditorData[i].VTasks.Count; x++)
- {
- EditorData[i].VTasks[x].NoTaskbar = EditorData[i].NoTaskbar;
- }
- }
- if (GUILayout.Button("展开", GUILayout.Width(35)))
- {
- EditorData[i].SetFoldout(true);
- }
- if (GUILayout.Button("收起", GUILayout.Width(35)))
- {
- EditorData[i].SetFoldout(false);
- }
- if (GUILayout.Button("删除", GUILayout.Width(35)))
- {
- RemoveModule(EditorData[i]);
- EditorData.RemoveAt(i);
- SortId();
- }
- if (GUILayout.Button("插入", GUILayout.Width(35)))
- {
- EditorData.Insert(i + 1, new ModuleEditorData());
- SortId();
- }
- if (GUILayout.Button("上移", GUILayout.Width(35)))
- {
- if (i > 0)
- {
- ModuleEditorData data = EditorData[i];
- EditorData.RemoveAt(i);
- EditorData.Insert(i - 1, data);
- SortId();
- }
- }
- if (GUILayout.Button("下移", GUILayout.Width(35)))
- {
- if (i < EditorData.Count - 1)
- {
- ModuleEditorData data = EditorData[i];
- EditorData.RemoveAt(i);
- EditorData.Insert(i + 1, data);
- SortId();
- }
- }
- EditorGUILayout.EndHorizontal();
- if (EditorData[i].Foldout)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(5));
- GUILayout.Label("模块名称:", GUILayout.Width(55));
- EditorData[i].Name = EditorGUILayout.TextField(EditorData[i].Name);
- EditorGUILayout.EndHorizontal();
- DrawTask(EditorData[i]);
- }
- }
- }
-
- private void DrawSetting()
- {
- float score = 0;
- for (int i = 0; i < EditorData.Count; i++)
- {
- for (int j = 0; j < EditorData[i].VTasks.Count; j++)
- {
- score += EditorData[i].VTasks[j].Score;
- }
- }
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("");
- GUILayout.Label($"总分:{score}", GUILayout.Width(80));
- if (Modules.Length > 0)
- {
- ModuleIndex = EditorGUILayout.Popup(ModuleIndex, Modules, GUILayout.Width(100));
- if (GUILayout.Button("拷贝模块", GUILayout.Width(70)))
- {
- Module module = ToModule(EditorData[ModuleIndex]);
- ModuleEditorData editordata = LoadModule(module);
- EditorData.Add(editordata);
- SortId();
- }
- }
- if (GUILayout.Button("添加模块", GUILayout.Width(70)))
- {
- EditorData.Add(new ModuleEditorData());
- SortId();
- }
- if (GUILayout.Button("保存", GUILayout.Width(70)))
- {
- Save();
- }
- EditorGUILayout.EndHorizontal();
- }
-
- private void DrawTask(ModuleEditorData module)
- {
- for (int i = 0; i < module.VTasks.Count; i++)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(10));
- module.VTasks[i].Foldout = EditorGUILayout.Foldout(
- module.VTasks[i].Foldout,
- $"任务:{module.VTasks[i].Id}"
- );
- GUILayout.Label("");
- GUILayout.Label(module.VTasks[i].Name);
- GUILayout.Label("");
- GUILayout.Label($"分数:{module.VTasks[i].Score}", GUILayout.Width(55));
- GUILayout.Label("关联获取:", GUILayout.Width(60));
- module.VTasks[i].Get = EditorGUILayout.Toggle(
- module.VTasks[i].Get,
- GUILayout.Width(20)
- );
- if (module.VTasks[i].Get)
- module.VTasks[i].GetId = EditorGUILayout.Popup(
- module.VTasks[i].GetId,
- OwnTasks,
- GUILayout.Width(80)
- );
- if (module.NoOrder)
- {
- GUILayout.Label("关联执行:", GUILayout.Width(60));
- module.VTasks[i].Perform = EditorGUILayout.Toggle(
- module.VTasks[i].Perform,
- GUILayout.Width(20)
- );
- if (module.VTasks[i].Perform)
- module.VTasks[i].PerformId = EditorGUILayout.Popup(
- module.VTasks[i].PerformId,
- module.VTasksName,
- GUILayout.Width(80)
- );
- }
- GUILayout.Label("忽略任务栏:", GUILayout.Width(70));
- module.VTasks[i].NoTaskbar = EditorGUILayout.Toggle(
- module.VTasks[i].NoTaskbar,
- GUILayout.Width(20)
- );
- if (GUILayout.Button("展开", GUILayout.Width(35)))
- {
- module.VTasks[i].SetFoldout(true);
- }
- if (GUILayout.Button("收起", GUILayout.Width(35)))
- {
- module.VTasks[i].SetFoldout(false);
- }
- if (GUILayout.Button("删除", GUILayout.Width(35)))
- {
- RemoveTask(module.VTasks[i]);
- module.VTasks.RemoveAt(i);
- SortId();
- return;
- }
- if (GUILayout.Button("插入", GUILayout.Width(35)))
- {
- VTaskEditorData vTask = new VTaskEditorData();
- vTask.ModuleData = module;
- module.VTasks.Insert(i + 1, vTask);
- SortId();
- }
- if (GUILayout.Button("上移", GUILayout.Width(35)))
- {
- if (i > 0)
- {
- VTaskEditorData data = module.VTasks[i];
- module.VTasks.RemoveAt(i);
- module.VTasks.Insert(i - 1, data);
- SortId();
- }
- }
- if (GUILayout.Button("下移", GUILayout.Width(35)))
- {
- if (i < EditorData.Count - 1)
- {
- VTaskEditorData data = module.VTasks[i];
- module.VTasks.RemoveAt(i);
- module.VTasks.Insert(i + 1, data);
- SortId();
- }
- }
- EditorGUILayout.EndHorizontal();
- if (module.VTasks[i].Foldout)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(22));
- GUILayout.Label("任务名称:", GUILayout.Width(55));
- module.VTasks[i].Name = EditorGUILayout.TextField(module.VTasks[i].Name);
- if (!module.VTasks[i].NoTaskbar)
- {
- GUILayout.Label("分数:", GUILayout.Width(30));
- module.VTasks[i].Score = EditorGUILayout.FloatField(module.VTasks[i].Score);
- }
- EditorGUILayout.EndHorizontal();
- DrawOperate(module.VTasks[i].Operates);
- }
- }
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(10));
- if (module.VTasks.Count > 0)
- {
- module.Index = EditorGUILayout.Popup(module.Index, OwnTasks, GUILayout.Width(100));
- if (GUILayout.Button("拷贝任务", GUILayout.Width(70)))
- {
- WSTask task = ToVTask(GetEditorData(module.Index));
- VTaskEditorData editordata = LoadVTask(task);
- editordata.ModuleData = module;
- module.VTasks.Add(editordata);
- SortId();
- }
- }
- if (GUILayout.Button("添加任务", GUILayout.Width(70)))
- {
- VTaskEditorData vTask = new VTaskEditorData();
- vTask.ModuleData = module;
- module.VTasks.Add(vTask);
- SortId();
- }
- EditorGUILayout.EndHorizontal();
- }
-
- private void DrawOperate(List<OperateEditorData> operates)
- {
- Color originalBackgroundColor = GUI.backgroundColor;
- for (int i = 0; i < operates.Count; i++)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(30));
- operates[i].Foldout = EditorGUILayout.Foldout(operates[i].Foldout, $"操作:{i + 1}");
- GUILayout.Label("");
- GUILayout.Label($"{operates[i].Describe}");
- GUILayout.Label("");
- GUILayout.Label("组件:", GUILayout.Width(30));
- operates[i].Index = EditorGUILayout.Popup(
- operates[i].Index,
- Components,
- GUILayout.Width(200)
- );
- if (GUILayout.Button("删除", GUILayout.Width(35)))
- {
- OperateEditorData data = operates[i];
- data.Editor.Dispose();
- operates.RemoveAt(i);
- return;
- }
- if (GUILayout.Button("插入", GUILayout.Width(35)))
- {
- operates.Insert(i + 1, CreateOperateEditor());
- }
- if (GUILayout.Button("上移", GUILayout.Width(35)))
- {
- if (i > 0)
- {
- OperateEditorData data = operates[i];
- operates.RemoveAt(i);
- operates.Insert(i - 1, data);
- }
- }
- if (GUILayout.Button("下移", GUILayout.Width(35)))
- {
- if (i < EditorData.Count - 1)
- {
- OperateEditorData data = operates[i];
- operates.RemoveAt(i);
- operates.Insert(i + 1, data);
- }
- }
- EditorGUILayout.EndHorizontal();
- if (operates[i].Foldout)
- {
- if (operates[i].Editor.Name != Components[operates[i].Index])
- {
- operates[i].Editor.Dispose();
- operates[i].Editor = CreateOperateEditor(operates[i].Index);
- }
- SetBackGroundColor(operates[i].Index, originalBackgroundColor);
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(42));
- EditorGUILayout.BeginVertical();
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("描述:", GUILayout.Width(30));
- operates[i].Describe = EditorGUILayout.TextField(operates[i].Describe);
- EditorGUILayout.EndHorizontal();
- operates[i].Editor.OnGUI();
- EditorGUILayout.EndVertical();
- EditorGUILayout.EndHorizontal();
- GUI.backgroundColor = originalBackgroundColor;
- }
- }
- EditorGUILayout.BeginHorizontal();
- GUILayout.Label("", GUILayout.Width(42));
- if (GUILayout.Button("添加操作"))
- {
- operates.Add(CreateOperateEditor());
- }
- EditorGUILayout.EndHorizontal();
- }
-
- public void Init(string filename)
- {
- LoadEditorType();
- path = $"{Application.dataPath}/Resources/Config/Process/{filename}.txt";
- if (ConfigHelper.ConfigExists(path))
- {
- Config = ConfigHelper.FileLoadConfig<List<Module>>(path);
- }
- if (Config.Count > 0)
- {
- for (int i = 0; i < Config.Count; i++)
- {
- EditorData.Add(LoadModule(Config[i]));
- }
- }
- EditorHelper.NameToScript(
- "Assets/Scripts/Framework/Common/Process",
- typeof(ProcessManager),
- ComponentTypes
- );
- AssetDatabase.Refresh();
- }
- private void SetBackGroundColor(int index, Color orginalColor)
- {
- Color color = orginalColor;
- switch (index)
- {
- case 0:
- ColorUtility.TryParseHtmlString("#F08784", out color);
- break;
- case 1:
- ColorUtility.TryParseHtmlString("#FFFE91", out color);
- break;
- case 2:
- ColorUtility.TryParseHtmlString("#A1FB8E", out color);
- break;
- case 3:
- ColorUtility.TryParseHtmlString("#EB3324", out color);
- break;
- case 4:
- ColorUtility.TryParseHtmlString("#F09B59", out color);
- break;
- case 5:
- ColorUtility.TryParseHtmlString("#9FFCFD", out color);
- break;
- case 6:
- ColorUtility.TryParseHtmlString("#3B93FD", out color);
- break;
- case 7:
- ColorUtility.TryParseHtmlString("#7E84F7", out color);
- break;
- case 8:
- ColorUtility.TryParseHtmlString("#EA3680", out color);
- break;
- case 9:
- ColorUtility.TryParseHtmlString("#377E47", out color);
- break;
- }
- GUI.backgroundColor = color;
- }
-
- private void Save()
- {
- Config.Clear();
- for (int i = 0; i < EditorData.Count; i++)
- {
- Config.Add(ToModule(EditorData[i]));
- }
- ConfigHelper.SaveConfig(Config, path);
- AssetDatabase.Refresh();
- }
-
- private Module ToModule(ModuleEditorData module)
- {
- Module data = new Module();
- data.Id = module.Id;
- data.Name = module.Name;
- data.NoTaskbar = module.NoTaskbar;
- data.NoOrder = module.NoOrder;
- for (int i = 0; i < module.VTasks.Count; i++)
- {
- WSTask task = ToVTask(module.VTasks[i]);
- data.WSTasks.Add(task);
- }
- return data;
- }
-
- private ModuleEditorData LoadModule(Module module)
- {
- ModuleEditorData data = new ModuleEditorData();
- data.Id = module.Id;
- data.Name = module.Name;
- data.NoOrder = module.NoOrder;
- data.NoTaskbar = module.NoTaskbar;
- for (int i = 0; i < module.WSTasks.Count; i++)
- {
- VTaskEditorData task = LoadVTask(module.WSTasks[i]);
- task.ModuleData = data;
- data.VTasks.Add(task);
- }
- for (int i = 0; i < data.VTasks.Count; i++)
- {
- if (data.VTasks[i].Perform)
- data.VTasks[i].PerformId = data.SetVTaskIndex(data.VTasks[i].PerformId);
- }
- return data;
- }
-
- private WSTask ToVTask(VTaskEditorData task)
- {
- WSTask data = new WSTask();
- data.Id = task.Id;
- data.Name = task.Name;
- data.NoTaskbar = task.NoTaskbar;
- data.Score = task.Score;
- data.Get = task.Get;
- data.GetId = task.Get ? task.GetId + 1 : 0;
- data.Perform = task.ModuleData.NoOrder ? task.Perform : false;
- data.PerformId = task.Perform ? task.ModuleData.GetVTaskId(task.PerformId) : 0;
- for (int i = 0; i < task.Operates.Count; i++)
- {
- Operate operate = new Operate();
- operate.Id = i + 1;
- operate.Component = EditorTypes[Components[task.Operates[i].Index]].Component;
- operate.Describe = task.Operates[i].Describe;
- if (task.Operates[i].IsLoad)
- operate.Json = task.Operates[i].Editor.ToData();
- else
- operate.Json = task.Operates[i].Json;
- data.Operates.Add(operate);
- }
- return data;
- }
-
- private VTaskEditorData LoadVTask(WSTask task)
- {
- VTaskEditorData data = new VTaskEditorData();
- data.Id = task.Id;
- data.Name = task.Name;
- data.Score = task.Score;
- data.Get = task.Get;
- data.GetId = task.Get ? task.GetId - 1 : 0;
- data.Perform = task.Perform;
- data.PerformId = task.PerformId;
- for (int i = 0; i < task.Operates.Count; i++)
- {
- OperateEditorData operate = new OperateEditorData();
- operate.Index = IntiOperateIndex(task.Operates[i].Component);
- operate.Describe = task.Operates[i].Describe;
- operate.Json = task.Operates[i].Json;
- operate.Editor = CreateOperateEditor(operate.Index);
- data.Operates.Add(operate);
- }
- return data;
- }
-
- private int IntiOperateIndex(string component)
- {
- string key = "";
- int index = -1;
- foreach (var item in EditorTypes)
- {
- if (item.Value.Component == component)
- {
- key = item.Key;
- break;
- }
- }
- for (int i = 0; i < Components.Length; i++)
- {
- if (Components[i] == key)
- {
- index = i;
- break;
- }
- }
- return index;
- }
-
- private void RemoveModule(ModuleEditorData module)
- {
- for (int i = 0; i < module.VTasks.Count; i++)
- {
- RemoveTask(module.VTasks[i]);
- }
- module.VTasks.Clear();
- }
-
- private void RemoveTask(VTaskEditorData task)
- {
- for (int i = 0; i < task.Operates.Count; i++)
- {
- task.Operates[i].Editor.Dispose();
- }
- task.Operates.Clear();
- }
-
- private string GetVTaskIndex(List<VTaskEditorData> tasks)
- {
- return $"第{tasks[0].Id}~{tasks[tasks.Count - 1].Id}步";
- }
-
- private VTaskEditorData GetEditorData(int index)
- {
- index = index + 1;
- for (int i = 0; i < EditorData.Count; i++)
- {
- VTaskEditorData vtask = EditorData[i].VTasks.Find(t => t.Id == index);
- if (vtask != null)
- return vtask;
- }
- return null;
- }
-
- private void SortId()
- {
- int id = 0;
- for (int i = 0; i < EditorData.Count; i++)
- {
- EditorData[i].Id = i + 1;
- for (int j = 0; j < EditorData[i].VTasks.Count; j++)
- {
- id += 1;
- EditorData[i].VTasks[j].Id = id;
- }
- }
- }
-
- private void LoadEditorType()
- {
- List<string> components = new List<string>();
- Type type = typeof(IOperateEditor);
- Type[] types = type.Assembly.GetTypes();
- for (int i = 0; i < types.Length; i++)
- {
- if (types[i].IsInterface)
- {
- continue;
- }
- Type[] interfaces = types[i].GetInterfaces();
- if (interfaces.Length == 0)
- {
- continue;
- }
- if (interfaces[0] == type)
- {
- object entity = Activator.CreateInstance(types[i]);
- string key = (string)types[i].GetProperty("Name").GetValue(entity);
- if (!EditorTypes.ContainsKey(key))
- {
- Type component = (Type)types[i].GetProperty("Component").GetValue(entity);
- ComponentTypes.Add(component);
- EditorTypes[key] = new EditorTypeData
- {
- EditorType = types[i],
- Component = component.Name
- };
- components.Add(key);
- }
- else
- {
- ShowNotification(new GUIContent($"类型:{types[i].Name} 的名称:{key} 已存在"), 2);
- }
- }
- }
- Components = components.ToArray();
- }
-
- private OperateEditorData CreateOperateEditor()
- {
- OperateEditorData data = new OperateEditorData();
- data.Index = 0;
- data.Editor = CreateOperateEditor(0);
- data.Foldout = true;
- return data;
- }
-
- private IOperateEditor CreateOperateEditor(int index)
- {
- Type type = EditorTypes[Components[index]].EditorType;
- IOperateEditor processeditor = (IOperateEditor)Activator.CreateInstance(type);
- processeditor.Init(null);
- return processeditor;
- }
-
- private T CloneObject<T>(T realobject)
- {
- using (Stream objStream = new MemoryStream())
- {
- IFormatter formatter = new BinaryFormatter();
- formatter.Serialize(objStream, realobject);
- objStream.Seek(0, SeekOrigin.Begin);
- return (T)formatter.Deserialize(objStream);
- }
- }
- }
- [Serializable]
- public class ModuleEditorData
- {
-
- public int Id;
-
- public string Name;
-
- public bool NoTaskbar;
-
- public bool NoOrder;
-
- public bool Foldout;
-
- public List<VTaskEditorData> VTasks = new List<VTaskEditorData>();
-
- public int Index;
-
- public string[] VTasksName
- {
- get { return VTasks.Select(t => $"{t.Id} {t.Name}").ToArray(); }
- }
-
-
- public void SetFoldout(bool foldout)
- {
- Foldout = foldout;
- for (int i = 0; i < VTasks.Count; i++)
- {
- VTasks[i].SetFoldout(foldout);
- }
- }
-
- public int GetVTaskId(int index)
- {
- return VTasks[index].Id;
- }
-
- public int SetVTaskIndex(int id)
- {
- return VTasks.FindIndex(t => t.Id == id);
- }
- }
- [Serializable]
- public class VTaskEditorData
- {
-
- public ModuleEditorData ModuleData;
-
- public int Id;
-
- public string Name;
-
- public bool NoTaskbar;
-
- public float Score;
-
- public bool Get;
-
- public int GetId;
-
- public bool Perform;
-
- public int PerformId;
-
- public bool Foldout;
-
- public List<OperateEditorData> Operates = new List<OperateEditorData>();
-
-
- public void SetFoldout(bool foldout)
- {
- Foldout = foldout;
- for (int i = 0; i < Operates.Count; i++)
- {
- Operates[i].Foldout = foldout;
- }
- }
- }
- [Serializable]
- public class OperateEditorData
- {
-
- public int Index;
-
- public IOperateEditor Editor;
-
- public string Describe;
-
- public string Json;
-
- private bool foldout;
-
- public bool Foldout
- {
- get { return foldout; }
- set
- {
- foldout = value;
- if (!IsLoad)
- Editor.Init(Json);
- IsLoad = true;
- }
- }
-
- public bool IsLoad;
- }
- public class EditorTypeData
- {
-
- public Type EditorType;
-
- public string Component;
- }
|