Exemplo n.º 1
0
 /// <summary>
 /// 绘制对话Text
 /// </summary>
 /// <param name="dialogue"></param>
 /// <param name="index"></param>
 private void DrawDialogueText(ScenarioDialogue dialogue, int index)
 {
     GUILayout.Space(8);
     EditorGUILayout.LabelField("Text", EditorStyles.boldLabel);
     PBEditorUtils.DrawCustomTextArea(ref dialogue.text, "", 0, m_target, 48);
     OnDialogueTextGUI(dialogue, index);
     GUILayout.Space(8);
     // DrawScenarioText(dialogue.text, 6);
 }
Exemplo n.º 2
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();
        }
Exemplo n.º 3
0
 protected virtual void OnDialogueTextGUI(ScenarioDialogue dialogue, int index)
 {
 }
Exemplo n.º 4
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);
            }
        }