/// <summary> /// 添加Act单元 /// </summary> /// <param name="actName"></param> private void addSkillAct(string group, string actName) { EditorWidgetState groupWidget = skillGroups[group]; ActSkillGroup skillGroup = groupWidget.Entity as ActSkillGroup; if (skillGroup.ActList == null) { skillGroup.ActList = new List <ActItemWidget>(); } //不允许相同组下,ACT重复 foreach (ActItemWidget item in skillGroup.ActList) { if (item.ActName == actName) { return; } } ActItemWidget itemWidget = new ActItemWidget(); itemWidget.GroupName = group; itemWidget.ActName = actName; skillGroup.ActList.Add(itemWidget); }
/// <summary> /// 添加角色组 /// </summary> private void addSkillGroup(string name) { if (skillGroups.ContainsKey(name)) { return; } EditorWidgetState group = new EditorWidgetState(); group.CanRemove = true; ActSkillGroup asg = new ActSkillGroup(); asg.GroupName = name; group.Entity = asg; this.skillGroups.Add(name, group); // indexGroup = skillGroups.Count - 1; }
public void OnGUI() { EditorGUIUtil.DrawHeader("Act列表"); leftRoleTree.Pos = GUILayout.BeginScrollView(leftRoleTree.Pos, false, true); foreach (EditorWidgetState group in skillGroups.Values) { ActSkillGroup skillGroup = group.Entity as ActSkillGroup; if (skillGroup.ActList == null || skillGroup.ActList.Count <= 0) { continue; } EditorGUI.indentLevel = 0; // if (group.CanRemove) EditorGUILayout.BeginHorizontal(); group.FoldOut = EditorGUILayout.Foldout(group.FoldOut, skillGroup.GroupName); // if (group.CanRemove) // { // if (GUILayout.Button("X", GUILayout.Width(25))) // { // // } // EditorGUILayout.EndHorizontal(); // } //绘制子列表 if (skillGroup.ActList == null || skillGroup.ActList.Count <= 0 || !group.FoldOut) { break; } EditorGUI.indentLevel++; List <object> removeList = null; //删除列表 foreach (ActItemWidget itemWidget in skillGroup.ActList) { GUILayout.BeginHorizontal(); GUILayout.Space(20); if (itemWidget.IsSelect) { GUI.backgroundColor = Color.green; } //选择编辑 if (GUILayout.Button(itemWidget.ActName, GUILayout.MaxWidth(200))) { if (selectActItem != null) { selectActItem.IsSelect = false; } itemWidget.IsSelect = true; selectActItem = itemWidget; //更新属性编辑区 mainEditor.InitActItemProperty(itemWidget); } GUI.backgroundColor = Color.white; if (GUILayout.Button("X", GUILayout.Width(25))) { if (removeList == null) { removeList = new List <object>(); } removeList.Add(itemWidget); } GUILayout.EndHorizontal(); } //更新绘制列表 if (removeList != null) { foreach (ActItemWidget obj in removeList) { skillGroup.ActList.Remove(obj); } } } GUILayout.EndScrollView(); GUILayout.BeginVertical("AS TextArea", GUILayout.ExpandHeight(false), GUILayout.MaxHeight(100)); EditorGUIUtil.DrawHeader("Editor"); //底部操作,添加分组 GUILayout.BeginHorizontal(); GUILayout.Label("Act组", GUILayout.Width(60)); string[] groupNameArr = new string[skillGroups.Count]; skillGroups.Keys.CopyTo(groupNameArr, 0); if (groupNameArr.Length > 0 && (lastIndexGroup != indexGroup)) { defaultGroupName = groupNameArr[indexGroup]; lastIndexGroup = indexGroup; } defaultGroupName = GUILayout.TextField(defaultGroupName, GUILayout.MaxWidth(100)); if (groupNameArr.Length > 0) { indexGroup = EditorGUILayout.Popup(indexGroup, groupNameArr, GUILayout.MaxWidth(100)); GUILayout.Space(5); } GUILayout.EndHorizontal(); //添加新的Act GUILayout.BeginHorizontal(); GUILayout.Label("添加新ACT", GUILayout.Width(60)); actSkillType = (ActSkillTypeEnum)EditorGUILayout.EnumPopup(actSkillType, GUILayout.MaxWidth(100)); GUILayout.EndHorizontal(); if (actSkillType == ActSkillTypeEnum.Custom) { GUILayout.BeginHorizontal(); GUILayout.Space(70); newActName = GUILayout.TextArea(newActName, GUILayout.MaxWidth(100)); GUILayout.EndHorizontal(); } //add button GUILayout.BeginHorizontal(); GUILayout.Space(10); GUI.backgroundColor = Color.green; if (GUILayout.Button("Add")) { this.addSkillGroup(defaultGroupName); this.addSkillAct(defaultGroupName, newActName); newActName = "New Act"; } GUI.backgroundColor = Color.white; GUILayout.Space(10); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.Space(5f); }