public static Dictionary <string, SkillEditorData> GetSkillEditorDict() { var types = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(ISkillEventEditor)))) .ToArray(); Dictionary <string, SkillEditorData> dict = new Dictionary <string, SkillEditorData>(); foreach (Type t in types) { SkillEventAttribute attribute = (SkillEventAttribute)t.GetCustomAttribute(typeof(SkillEventAttribute)); SkillEditorData data = new SkillEditorData(); data.classdata = t; data.attr = attribute; dict.Add(attribute.Name, data); } return(dict); }
/// <summary> /// 当前技能帧事件 /// </summary> private void OnGUI_DrawSkillEvent() { GUILayout.BeginVertical(GUILayout.Width(300), GUILayout.Height(550)); GUILayout.Label("技能事件列表:"); if (curSkillEventList != null) { int count = curSkillEventList.Count; for (int i = 0; i < curSkillEventList.Count; i++) { GUILayout.BeginHorizontal(); if (curSkillEvnetIndex == i) { GUI.color = Color.green; } else { GUI.color = Color.white; } var e = curSkillEventList[i]; if (GUILayout.Button(string.Format("[{0}] " + e.EventName, i))) { this.curSkillEvnetIndex = i; //TODO 需要给Editor进行赋值 SkillEditorData data = skillEditorDict[e.EventName]; curSkillEventEditor = (ISkillEventEditor)data.classdata.Assembly.CreateInstance(data.classdata.FullName); GUI.FocusControl("RefreshFocus"); } GUI.color = GUI.backgroundColor; if (GUILayout.Button("DEL", GUILayout.Width(35))) { curSkillEventList.Remove(e); curSkillblock.Events.Remove(e); this.curSkillEvnetIndex = -1; curSkillEventEditor = null; count = curSkillEventList.Count; GUI.FocusControl("RefreshFocus"); } GUILayout.EndHorizontal(); } } GUILayout.Space(20); if (curSkillblock != null) { if (GUILayout.Button("添加事件")) { Window_SelectSkillEvent window = (Window_SelectSkillEvent)EditorWindow.GetWindow(typeof(Window_SelectSkillEvent), false, "选择创建skillevent"); window.Show(this.curframe, this.curSkillblock, this.curSkillEventList); } } GUILayout.EndVertical(); TableToolMenu.Layout_DrawSeparatorV(Color.gray, 2); }