private ScenarioWidgetState matchCommand(string cmd) { Type type; ScenarioCommandTypes commandkey = (ScenarioCommandTypes)Enum.Parse(typeof(ScenarioCommandTypes), cmd); type = _commandDic[commandkey]; ScenarioWidgetState state = new ScenarioWidgetState(); state.FoldOut = true; state.type = type; state.CommandType = commandkey; state.Entitys.Add((BaseCommandModel)Activator.CreateInstance(type)); return(state); }
public void OnGUI() { EditorGUI.indentLevel = 0; m_scrollPositionSI = GUILayout.BeginScrollView(m_scrollPositionSI, false, true); _FoldOut = EditorGUILayout.Foldout(_FoldOut, "命令属性"); if (_FoldOut) { EditorGUI.indentLevel += 1; for (int i = 0; i < _cmds.Count; i++) { ScenarioWidgetState obj = _cmds[i]; if (obj.Entitys.Count <= 0) { return; } string classDisName = ""; FieldInfo filedInfo = typeof(ScenarioCommandTypes).GetField(obj.CommandType.ToString()); object[] commandTypeAttrs = filedInfo.GetCustomAttributes(typeof(DisplayNameAttribute), false); classDisName = commandTypeAttrs.Length > 0 ? ((DisplayNameAttribute)commandTypeAttrs[0]).DisplayName : filedInfo.Name; if (commandTypeAttrs.Length > 0) { classDisName = ((DisplayNameAttribute)commandTypeAttrs[0]).DisplayName; } obj.FoldOut = EditorGUILayout.Foldout(obj.FoldOut, classDisName); if (obj.FoldOut) { for (int j = 0; j < obj.Entitys.Count; j++) { EditorGUI.indentLevel += 1; Type type = obj.Entitys[j].GetType(); bool flag = CreateRadioGroupView(type, obj.Entitys[j]); if (!flag) { CreateCommonView(type, obj.Entitys[j]); } if (j == obj.Entitys.Count - 1) { object[] multuiAttrs = type.GetCustomAttributes(typeof(MultiAttribute), false); if (multuiAttrs.Length > 0) { if (GUILayout.Button("Add")) { obj.Entitys.Add((BaseCommandModel)Activator.CreateInstance(obj.type)); } } } EditorGUI.indentLevel -= 1; } } } } GUILayout.EndScrollView(); }
public void OnGUI() { EditorGUILayout.BeginHorizontal(); //GUILayout.Label("导出路径选择"); if (GUILayout.Button("导入", GUILayout.Width(100))) { if (ImportData()) { _cmds.Clear(); commanList.Clear(); } } if (GUILayout.Button("保存", GUILayout.Width(100))) { SaveData(); } if (GUILayout.Button("导出", GUILayout.Width(100))) { ExportData(); } EditorGUILayout.EndHorizontal(); m_scrollPosition = GUILayout.BeginScrollView(m_scrollPosition, false, true); GUILayout.BeginVertical(); for (int i = 0; i < _cmds.Count; i++) { GUILayout.BeginHorizontal(); if (GUILayout.Button(_cmds[i], GUILayout.Width(120))) { updatePropertyWindow(); } if (GUILayout.Button("删除", GUILayout.Width(80))) { _cmds.RemoveAt(i); commanList.RemoveAt(i); updatePropertyWindow(); } if (GUILayout.Button("插入", GUILayout.Width(80))) { _cmds.Insert(i, options[index]); ScenarioWidgetState state = matchCommand(options[index]); commanList.Insert(i, state); updatePropertyWindow(); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("添加命令")) { Debug.Log("添加命令" + options[index]); _cmds.Add(options[index]); ScenarioWidgetState state = matchCommand(options[index]); commanList.Add(state); updatePropertyWindow(); } index = EditorGUILayout.Popup(index, options); EditorGUILayout.EndHorizontal(); GUILayout.EndScrollView(); }