/// <summary> /// 绘制对话组GUI /// </summary> private void DialogueGroupGUI() { GUILayout.Space(10); Rect rect = EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true)); rect.width += 12; rect.height += 10; rect.x -= 9; rect.y -= 4; GUI.Box(rect, ""); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Dialogue", EditorStyles.label); EditorGUI.BeginChangeCheck(); int _count = EditorGUILayout.DelayedIntField(m_target.dialogues.Count, GUILayout.Width(42)); if (EditorGUI.EndChangeCheck()) { PBEditorUtils.ChangeListLength(m_target.dialogues, _count, m_target); } if (GUILayout.Button("Fold", EditorStyles.miniButton, GUILayout.Width(32), GUILayout.Height(15))) { m_dialogueItemFoldOuts.Clear(); } EditorGUILayout.EndHorizontal(); OnDialogueGroupBarGUI(); EditorGUILayout.EndVertical(); GUILayout.Space(5); //绘制对话子项 for (int i = 0; i < m_target.dialogues.Count; i++) { DrawDialogueItem(m_target.dialogues[i], i); } }
private void DrawCommandGroup(ScenarioDialogue dialogue, int index) { GUILayout.Space(5); Rect rect = EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true)); rect.width += 9; rect.height += 8; rect.x -= 6; rect.y -= 4; GUI.Box(rect, ""); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Commands", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); int _count = EditorGUILayout.DelayedIntField(dialogue.commands.Count, GUILayout.Width(42)); if (EditorGUI.EndChangeCheck()) { PBEditorUtils.ChangeListLength(dialogue.commands, _count, m_target); } EditorGUILayout.EndHorizontal(); for (int i = 0; i < dialogue.commands.Count; i++) { Rect contextRect = DrawCommandItem(dialogue.commands[i], i); PBEditorUtils.ShowContextMenu(contextRect, () => { GenericMenu menu = new GenericMenu(); menu.AddDisabledItem(new GUIContent("Command")); menu.AddSeparator(""); menu.AddItem(new GUIContent("Add"), false, (object idx) => { Undo.RecordObject(m_target, "Add Command"); dialogue.commands.Insert((int)idx + 1, new ScenarioDialogue.Command()); }, i); menu.AddItem(new GUIContent("Delete"), false, (object idx) => { Undo.RecordObject(m_target, "Delete Command"); dialogue.commands.RemoveAt((int)idx); }, i); menu.ShowAsContext(); }); } EditorGUILayout.EndVertical(); }