Example #1
0
        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();
        }
Example #2
0
        /// <summary>
        /// 绘制子项
        /// </summary>
        /// <param name="dialogue"></param>
        /// <param name="index"></param>
        private void DrawDialogueItem(ScenarioDialogue dialogue, int index)
        {
            bool foldOut = GetItemFoldOut(m_dialogueItemFoldOuts, index);

            if (foldOut)
            {
                GUILayout.Space(10);
            }
            GUILayout.Space(5);
            Rect rect = EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true));

            rect.width  += 12;
            rect.height += 10;
            rect.x      -= 9;
            rect.y      -= 4;
            GUI.Box(rect, "");
            //是否展开
            SetItemFoldOut(m_dialogueItemFoldOuts, index, EditorGUILayout.Foldout(GetItemFoldOut(m_dialogueItemFoldOuts, index), "", true, EditorStyles.label));

            Rect dialogueDisplayRect = new Rect(rect);

            dialogueDisplayRect.x     += 20;
            dialogueDisplayRect.width -= 30;
            dialogueDisplayRect.height = 18;
            dialogueDisplayRect.y     += 5;
            GUI.Label(dialogueDisplayRect, new GUIContent(m_target.GetLocalText(dialogue.text), m_target.GetLocalText(dialogue.text)));

            Rect menuRect = new Rect(rect);

            menuRect.height = 25;
            PBEditorUtils.ShowContextMenu(menuRect, () =>
            {
                GenericMenu menu = new GenericMenu();
                menu.AddDisabledItem(new GUIContent("Dialogue"));
                menu.AddSeparator("");
                menu.AddItem(new GUIContent("Add"), false, OnMenuAddDialogueItem, index + 1);
                menu.AddItem(new GUIContent("Insert"), false, OnMenuAddDialogueItem, index);
                menu.AddItem(new GUIContent("Duplicate"), false, OnMenuInsertDialogueItem, index);
                menu.AddItem(new GUIContent("Delete"), false, OnMenuDeleteDialogueItem, dialogue);
                menu.ShowAsContext();
            });

            if (foldOut)
            {
                //绘制内部内容
                Rect subRect = new Rect(rect);
                subRect.width -= 3;
                //subRect.height += 10;
                subRect.x      += 3;
                subRect.y      += 32;
                subRect.height -= 50;
                GUI.Box(subRect, "");
                GUILayout.Space(15);

                PBEditorUtils.DrawCustomText(ref dialogue.key, "Key", customLabelWith, m_target);

                Rect lineRect = new Rect(subRect);
                lineRect.height = 2;
                lineRect.y     += 24;
                GUI.Box(lineRect, "");

                DrawCharacterGroup(dialogue, index);
                DrawDialogueText(dialogue, index);
                DrawSelectionGroup(dialogue, index);
                DrawCommandGroup(dialogue, index);

                OnDialogueItemGUI(dialogue, index);
                GUILayout.Space(3);
            }
            EditorGUILayout.EndVertical();
            GUILayout.Space(5);
            if (foldOut)
            {
                GUILayout.Space(10);
            }
        }