/// <summary> /// 添加新的模块 /// </summary> private void onAddNewModuleGUI() { EditorGUIUtil.DrawHeader("Add New Module"); //添加模块视图 GUILayout.BeginHorizontal("AS TextArea", GUILayout.Height(30)); selectEnum = (ActModuleEnum)EditorGUILayout.EnumPopup("新模块", selectEnum, GUILayout.MaxWidth(Screen.width * 0.5f)); GUI.backgroundColor = Color.green; if (GUILayout.Button("Add", GUILayout.Width(60))) { if (string.IsNullOrEmpty(actName)) { return; } EditorWidgetState widget = new EditorWidgetState(); widget.Entity = Activator.CreateInstance(moduleMap[selectEnum]); widget.FoldOut = true; EditorGUIUtil.FindAllWidget(new List <EditorWidgetState>(), widget, widget.Entity); widgetList.Add(widget); } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); }
/// <summary> /// 右边的技能列表 /// </summary> private void onRightActListGUI(EditorScrollWidgetState <object> scrollWidget) { GUILayout.BeginVertical(); EditorGUIUtil.DrawHeader("技能列表"); scrollWidget.Pos = GUILayout.BeginScrollView(scrollWidget.Pos); GUILayout.EndScrollView(); GUILayout.EndVertical(); }
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); }
/// <summary> /// 中心区域的布局 /// </summary> private void OnCenterGUI() { GUILayout.BeginVertical(); centerScrollPos = EditorGUILayout.BeginScrollView(centerScrollPos); //绘制属性 EditorGUIUtil.DrawHeader(actName + "属性"); propertyScrollPos = EditorGUILayout.BeginScrollView(propertyScrollPos); List <EditorWidgetState> removes = null; foreach (EditorWidgetState obj in widgetList) { EditorGUI.indentLevel = 0; bool isRemove = EditorGUIUtil.OnGUIInstanceDisplay(obj, true); if (isRemove) { if (removes == null) { removes = new List <EditorWidgetState>(); } removes.Add(obj); } } //remove if (removes != null && removes.Count > 0) { foreach (EditorWidgetState ews in removes) { widgetList.Remove(ews); } } EditorGUILayout.EndScrollView(); EditorGUIUtil.DrawSeparator(); //添加新模块视图 this.onAddNewModuleGUI(); if (!string.IsNullOrEmpty(actName)) { EditorGUIUtil.DrawSeparator(); GUILayout.BeginHorizontal(); GUILayout.Space(20); //保存数据到本地 if (GUILayout.Button("Save")) { this.saveActFile(actGroup, actName, true); } GUILayout.Space(20); GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); GUILayout.Space(5F); GUILayout.EndVertical(); }