示例#1
0
    public override void OnInspectorGUI()
    {
        FPH_DialogCreator myInspector = (FPH_DialogCreator)target;

        GUILayout.BeginHorizontal();
        //Choose what kind of dialog you want to create
        EditorGUIUtility.labelWidth = 80.0f;
        myInspector.dialogType      = EditorGUILayout.Popup("Dialog Type:", myInspector.dialogType, myInspector.dialogTypeArray);

        //What will be the ID of the current dialog?
        EditorGUIUtility.labelWidth = 27.0f;
        myInspector.dialogID        = EditorGUILayout.IntField("ID#:", myInspector.dialogID, GUILayout.ExpandWidth(false));

        if (myInspector.dialogType == 0 || myInspector.dialogType == 2)
        {
            EditorGUIUtility.labelWidth = 75.0f;
            myInspector.moveToID        = EditorGUILayout.IntField("Move to ID#: ", myInspector.moveToID, GUILayout.ExpandWidth(false));
        }
        GUILayout.EndHorizontal();

        EditorGUIUtility.labelWidth = 100.0f;

        GUILayout.Space(10.0f);         //Put some spece between different elements

        showChangeChara = EditorGUILayout.Foldout(showChangeChara, "Change character(s) sprite");
        if (showChangeChara)
        {
            EditorGUI.indentLevel         = 1;
            EditorGUIUtility.labelWidth   = 230.0f;
            myInspector.changeCharaSprite = EditorGUILayout.Toggle("What to change character(s) sprite?", myInspector.changeCharaSprite);
            if (myInspector.changeCharaSprite)
            {
                EditorGUIUtility.labelWidth = 100.0f;
                SerializedObject   serTarget = new SerializedObject(target);
                SerializedProperty charaList = serTarget.FindProperty("characters");
                EditorGUILayout.PropertyField(charaList, new GUIContent("Chatacters"), true);

                SerializedProperty spriteList = serTarget.FindProperty("charaSprite");
                EditorGUILayout.PropertyField(spriteList, new GUIContent("Character Sprite"), true);

                serTarget.ApplyModifiedProperties();
            }
            EditorGUI.indentLevel = 0;
        }

        showMoveChara = EditorGUILayout.Foldout(showMoveChara, "Move character(s)");
        if (showMoveChara)
        {
            EditorGUI.indentLevel       = 1;
            EditorGUIUtility.labelWidth = 230.0f;
            myInspector.moveChara       = EditorGUILayout.Toggle("Want to move character(s)?", myInspector.moveChara);
            if (myInspector.moveChara)
            {
                EditorGUIUtility.labelWidth = 100.0f;
                SerializedObject   serTarget     = new SerializedObject(target);
                SerializedProperty charaMoveList = serTarget.FindProperty("charactersToMove");
                EditorGUILayout.PropertyField(charaMoveList, new GUIContent("Chatacters to move"), true);

                SerializedProperty newPosList = serTarget.FindProperty("charactersNewPosition");
                EditorGUILayout.PropertyField(newPosList, new GUIContent("New Positions"), true);

                SerializedProperty timesList = serTarget.FindProperty("timesToMove");
                EditorGUILayout.PropertyField(timesList, new GUIContent("Times"), true);

                serTarget.ApplyModifiedProperties();
            }
            EditorGUI.indentLevel = 0;
        }

        showFadeSprite = EditorGUILayout.Foldout(showFadeSprite, "Fade character(s)");
        if (showFadeSprite)
        {
            EditorGUI.indentLevel       = 1;
            EditorGUIUtility.labelWidth = 230.0f;
            myInspector.fadeSprite      = EditorGUILayout.Toggle("Want to fade character(s)?", myInspector.fadeSprite);
            if (myInspector.fadeSprite)
            {
                EditorGUIUtility.labelWidth = 100.0f;
                SerializedObject   serTarget        = new SerializedObject(target);
                SerializedProperty spriteToFadeList = serTarget.FindProperty("spriteToFade");
                EditorGUILayout.PropertyField(spriteToFadeList, new GUIContent("Chatacters to fade"), true);

                SerializedProperty fadeValList = serTarget.FindProperty("fadeToVal");
                EditorGUILayout.PropertyField(fadeValList, new GUIContent("Fade to Value"), true);

                SerializedProperty timesFadeList = serTarget.FindProperty("timesToFade");
                EditorGUILayout.PropertyField(timesFadeList, new GUIContent("Times"), true);

                serTarget.ApplyModifiedProperties();
            }
            EditorGUI.indentLevel = 0;
        }

        showFlip = EditorGUILayout.Foldout(showFlip, "Rotate character(s)");
        if (showFlip)
        {
            EditorGUI.indentLevel       = 1;
            EditorGUIUtility.labelWidth = 230.0f;
            myInspector.flipChara       = EditorGUILayout.Toggle("Want to rotate character?", myInspector.flipChara);
            if (myInspector.flipChara)
            {
                EditorGUIUtility.labelWidth = 100.0f;
                SerializedObject   rotTarget       = new SerializedObject(target);
                SerializedProperty charaToFlipList = rotTarget.FindProperty("charaToFlip");
                EditorGUILayout.PropertyField(charaToFlipList, new GUIContent("Chatacters to rotate"), true);

                SerializedProperty rotToList = rotTarget.FindProperty("rotateCharaTo");
                EditorGUILayout.PropertyField(rotToList, new GUIContent("Rotate to"), true);

                SerializedProperty rotInTimeList = rotTarget.FindProperty("rotateInTime");
                EditorGUILayout.PropertyField(rotInTimeList, new GUIContent("Rotate chara in time"), true);

                rotTarget.ApplyModifiedProperties();
            }
            EditorGUI.indentLevel = 0;
        }

        showPlayAudio = EditorGUILayout.Foldout(showPlayAudio, "Play Audio");
        if (showPlayAudio)
        {
            EditorGUI.indentLevel       = 1;
            EditorGUIUtility.labelWidth = 150.0f;

            if (myInspector.dialogType == 0)
            {
                myInspector.charaVoiceClip = (AudioClip)EditorGUILayout.ObjectField("Character voice: ", myInspector.charaVoiceClip, typeof(AudioClip), true);
            }
            myInspector.gameplayFxClip = (AudioClip)EditorGUILayout.ObjectField("Sound Fx: ", myInspector.gameplayFxClip, typeof(AudioClip), true);
            EditorGUI.indentLevel      = 0;
        }

        showDialogCamera = EditorGUILayout.Foldout(showDialogCamera, "Dialog cameras");
        if (showDialogCamera)
        {
            EditorGUI.indentLevel        = 1;
            EditorGUIUtility.labelWidth  = 230.0f;
            myInspector.useDialogCameras = EditorGUILayout.Toggle("Use dialog cameras?", myInspector.useDialogCameras);
            if (myInspector.useDialogCameras)
            {
                EditorGUIUtility.labelWidth = 150.0f;
                if (myInspector.dialogID == 0)
                {
                    EditorGUILayout.HelpBox("Since current dialog ID is 0 you must assign player camera to 'Camera to Deactivate'.", MessageType.Info, true);
                }
                myInspector.cameraToDeactivate = (GameObject)EditorGUILayout.ObjectField("Camera to Deactivate:", myInspector.cameraToDeactivate, typeof(GameObject), true);
                myInspector.cameraToActivate   = (GameObject)EditorGUILayout.ObjectField("Camera to Activate:", myInspector.cameraToActivate, typeof(GameObject), true);
            }
            EditorGUI.indentLevel = 0;
        }

        GUILayout.Space(10.0f);         //Put some spece between different elements

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("English", GUILayout.Width(80.0f)))
        {
            language = "English";
        }
        if (GUILayout.Button("Italian", GUILayout.Width(80.0f)))
        {
            language = "Italian";
        }
        if (GUILayout.Button("Spanish", GUILayout.Width(80.0f)))
        {
            language = "Spanish";
        }
        if (GUILayout.Button("German", GUILayout.Width(80.0f)))
        {
            language = "German";
        }
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("French", GUILayout.Width(80.0f)))
        {
            language = "French";
        }
        if (GUILayout.Button("Japanese", GUILayout.Width(80.0f)))
        {
            language = "Japanese";
        }
        if (GUILayout.Button("Chinese", GUILayout.Width(80.0f)))
        {
            language = "Chinese";
        }
        if (GUILayout.Button("Russian", GUILayout.Width(80.0f)))
        {
            language = "Russian";
        }
        GUILayout.EndHorizontal();

        #region StandardDialog
        //if Dialog type is standard show the dialog text area
        if (myInspector.dialogType == 0)
        {
            GUILayout.Space(10.0f);             //Put some spece between different elements

            EditorGUIUtility.labelWidth = 100.0f;
            myInspector.characterName   = EditorGUILayout.TextField("Character Name:", myInspector.characterName, GUILayout.MaxWidth(410.0f), GUILayout.MinWidth(100.0f));

            if (language == "English")
            {
                EditorGUILayout.LabelField("Dialog Text (English):");
                EditorGUI.indentLevel  = 5;
                myInspector.dialogText = EditorGUILayout.TextArea(myInspector.dialogText, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel  = 0;
            }
            if (language == "Italian")
            {
                EditorGUILayout.LabelField("Dialog Text (Italian):");
                EditorGUI.indentLevel         = 5;
                myInspector.dialogTextItalian = EditorGUILayout.TextArea(myInspector.dialogTextItalian, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel         = 0;
            }
            if (language == "Spanish")
            {
                EditorGUILayout.LabelField("Dialog Text (Spanish):");
                EditorGUI.indentLevel          = 5;
                myInspector.dialogText_Spanish = EditorGUILayout.TextArea(myInspector.dialogText_Spanish, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel          = 0;
            }
            if (language == "German")
            {
                EditorGUILayout.LabelField("Dialog Text (German):");
                EditorGUI.indentLevel         = 5;
                myInspector.dialogText_German = EditorGUILayout.TextArea(myInspector.dialogText_German, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel         = 0;
            }
            if (language == "French")
            {
                EditorGUILayout.LabelField("Dialog Text (French):");
                EditorGUI.indentLevel         = 5;
                myInspector.dialogText_French = EditorGUILayout.TextArea(myInspector.dialogText_French, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel         = 0;
            }
            if (language == "Japanese")
            {
                EditorGUILayout.LabelField("Dialog Text (Japanese):");
                EditorGUI.indentLevel           = 5;
                myInspector.dialogText_Japanese = EditorGUILayout.TextArea(myInspector.dialogText_Japanese, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel           = 0;
            }
            if (language == "Chinese")
            {
                EditorGUILayout.LabelField("Dialog Text (Chinese):");
                EditorGUI.indentLevel          = 5;
                myInspector.dialogText_Chinese = EditorGUILayout.TextArea(myInspector.dialogText_Chinese, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel          = 0;
            }
            if (language == "Russian")
            {
                EditorGUILayout.LabelField("Dialog Text (Russian):");
                EditorGUI.indentLevel          = 5;
                myInspector.dialogText_Russian = EditorGUILayout.TextArea(myInspector.dialogText_Russian, GUILayout.Height(150.0f), GUILayout.MinWidth(100.0f), GUILayout.MaxWidth(595.0f));
                EditorGUI.indentLevel          = 0;
            }

            EditorGUIUtility.labelWidth = 75.0f;
            myInspector.textColor       = EditorGUILayout.ColorField("Text color:", myInspector.textColor);

            GUILayout.Space(10.0f);             //Put some spece between different elements

            EditorGUIUtility.labelWidth = 160.0f;

            myInspector.wantToDestroyObj = EditorGUILayout.Toggle("Destroy object?", myInspector.wantToDestroyObj);
            if (myInspector.wantToDestroyObj)
            {
                EditorGUI.indentLevel    = 1;
                myInspector.objToDestroy = (GameObject)EditorGUILayout.ObjectField("Object to destroy:", myInspector.objToDestroy, typeof(GameObject), true);
                EditorGUI.indentLevel    = 0;
            }

            myInspector.wantToSendMessageToObj = EditorGUILayout.Toggle("Send message to object?", myInspector.wantToSendMessageToObj);
            if (myInspector.wantToSendMessageToObj)
            {
                EditorGUI.indentLevel        = 1;
                myInspector.objToSendMessage = (GameObject)EditorGUILayout.ObjectField("Send message to:", myInspector.objToSendMessage, typeof(GameObject), true);
                myInspector.messageToSend    = EditorGUILayout.TextField("Message to send:", myInspector.messageToSend);
                EditorGUI.indentLevel        = 0;
            }

            myInspector.isLastOne = EditorGUILayout.Toggle("Is this the last dialog?", myInspector.isLastOne);
            if (myInspector.isLastOne)
            {
                EditorGUI.indentLevel  = 1;
                myInspector.colorReset = EditorGUILayout.Toggle("Want to reset color?", myInspector.colorReset);
                if (myInspector.colorReset)
                {
                    myInspector.resetColor = EditorGUILayout.ColorField("Reset color:", myInspector.resetColor);
                }

                myInspector.switchDialog = EditorGUILayout.Toggle("Want to switch dialog?", myInspector.switchDialog);
                if (myInspector.switchDialog)
                {
                    EditorGUI.indentLevel    = 2;
                    myInspector.newDialog    = (GameObject)EditorGUILayout.ObjectField("New dialog:", myInspector.newDialog, typeof(GameObject), true);
                    myInspector.destroyOnEnd = EditorGUILayout.Toggle("Destroy dialog on end?", myInspector.destroyOnEnd);
                    EditorGUI.indentLevel    = 1;
                }

                if (!myInspector.switchDialog)
                {
                    myInspector.destroyOnEnd = EditorGUILayout.Toggle("Destroy dialog on end?", myInspector.destroyOnEnd);
                }
                EditorGUI.indentLevel = 0;
            }
            if (!myInspector.isLastOne)
            {
                myInspector.destroyOnEnd = false;
            }
        }
        #endregion

        #region MultipleQuestion
        // if Dialog Type is multiple choise show different option
        if (myInspector.dialogType == 1)
        {
            GUILayout.Space(10.0f);             //Put some spece between different elements

            EditorGUIUtility.labelWidth = 180.0f;
            //QUESTION ONE
            if (language == "English")
            {
                myInspector.questionOne = EditorGUILayout.TextField("First Question (English): ", myInspector.questionOne);
            }
            if (language == "Italian")
            {
                myInspector.questionOne_Italian = EditorGUILayout.TextField("First Question (Italian): ", myInspector.questionOne_Italian);
            }
            if (language == "Spanish")
            {
                myInspector.questionOne_Spanish = EditorGUILayout.TextField("First Question (Spanish): ", myInspector.questionOne_Spanish);
            }
            if (language == "German")
            {
                myInspector.questionOne_German = EditorGUILayout.TextField("First Question (German): ", myInspector.questionOne_German);
            }
            if (language == "French")
            {
                myInspector.questionOne_French = EditorGUILayout.TextField("First Question (French): ", myInspector.questionOne_French);
            }
            if (language == "Japanese")
            {
                myInspector.questionOne_Japanese = EditorGUILayout.TextField("First Question (Japanese): ", myInspector.questionOne_Japanese);
            }
            if (language == "Chinese")
            {
                myInspector.questionOne_Chinese = EditorGUILayout.TextField("First Question (Chinese): ", myInspector.questionOne_Chinese);
            }
            if (language == "Russian")
            {
                myInspector.questionOne_Russian = EditorGUILayout.TextField("First Question (Russian): ", myInspector.questionOne_Russian);
            }
            myInspector.questionOneToID = EditorGUILayout.IntField("First question brings to ID: ", myInspector.questionOneToID);

            GUILayout.Space(10.0f);             //Put some spece between different elements

            //QUESTION TWO
            if (language == "English")
            {
                myInspector.questionTwo = EditorGUILayout.TextField("Second Question (English): ", myInspector.questionTwo);
            }
            if (language == "Italian")
            {
                myInspector.questionTwo_Italian = EditorGUILayout.TextField("Second Question (Italian): ", myInspector.questionTwo_Italian);
            }
            if (language == "Spanish")
            {
                myInspector.questionTwo_Spanish = EditorGUILayout.TextField("Second Question (Spanish): ", myInspector.questionTwo_Spanish);
            }
            if (language == "German")
            {
                myInspector.questionTwo_German = EditorGUILayout.TextField("Second Question (German): ", myInspector.questionTwo_German);
            }
            if (language == "French")
            {
                myInspector.questionTwo_French = EditorGUILayout.TextField("Second Question (French): ", myInspector.questionTwo_French);
            }
            if (language == "Japanese")
            {
                myInspector.questionTwo_Japanese = EditorGUILayout.TextField("Second Question (Japanese): ", myInspector.questionTwo_Japanese);
            }
            if (language == "Chinese")
            {
                myInspector.questionTwo_Chinese = EditorGUILayout.TextField("Second Question (Chinese): ", myInspector.questionTwo_Chinese);
            }
            if (language == "Russian")
            {
                myInspector.questionTwo_Russian = EditorGUILayout.TextField("Second Question (Russian): ", myInspector.questionTwo_Russian);
            }
            myInspector.questionTwoToID = EditorGUILayout.IntField("Second question brings to ID: ", myInspector.questionTwoToID);

            GUILayout.Space(10.0f);             //Put some spece between different elements

            //QUESTION THREE
            if (language == "English")
            {
                myInspector.questionThree = EditorGUILayout.TextField("Third Question (English): ", myInspector.questionThree);
            }
            if (language == "Italian")
            {
                myInspector.questionThree_Italian = EditorGUILayout.TextField("Third Question (Italian): ", myInspector.questionThree_Italian);
            }
            if (language == "Spanish")
            {
                myInspector.questionThree_Spanish = EditorGUILayout.TextField("Third Question (Spanish): ", myInspector.questionThree_Spanish);
            }
            if (language == "German")
            {
                myInspector.questionThree_German = EditorGUILayout.TextField("Third Question (German): ", myInspector.questionThree_German);
            }
            if (language == "French")
            {
                myInspector.questionThree_French = EditorGUILayout.TextField("Third Question (French): ", myInspector.questionThree_French);
            }
            if (language == "Japanese")
            {
                myInspector.questionThree_Japanese = EditorGUILayout.TextField("Third Question (Japanese): ", myInspector.questionThree_Japanese);
            }
            if (language == "Chinese")
            {
                myInspector.questionThree_Chinese = EditorGUILayout.TextField("Third Question (Chinese): ", myInspector.questionThree_Chinese);
            }
            if (language == "Russian")
            {
                myInspector.questionThree_Russian = EditorGUILayout.TextField("Third Question (Russian): ", myInspector.questionThree_Russian);
            }
            myInspector.questionThreeToID = EditorGUILayout.IntField("Third question brings to ID: ", myInspector.questionThreeToID);

            GUILayout.Space(10.0f);             //Put some spece between different elements

            //QUESTION FOUR
            if (language == "English")
            {
                myInspector.questionFour = EditorGUILayout.TextField("Fourth Question (English): ", myInspector.questionFour);
            }
            if (language == "Italian")
            {
                myInspector.questionFour_Italian = EditorGUILayout.TextField("Fourth Question (Italian): ", myInspector.questionFour_Italian);
            }
            if (language == "Spanish")
            {
                myInspector.questionFour_Spanish = EditorGUILayout.TextField("Fourth Question (Spanish): ", myInspector.questionFour_Spanish);
            }
            if (language == "German")
            {
                myInspector.questionFour_German = EditorGUILayout.TextField("Fourth Question (German): ", myInspector.questionFour_German);
            }
            if (language == "French")
            {
                myInspector.questionFour_French = EditorGUILayout.TextField("Fourth Question (French): ", myInspector.questionFour_French);
            }
            if (language == "Japanese")
            {
                myInspector.questionFour_Japanese = EditorGUILayout.TextField("Fourth Question (Japanese): ", myInspector.questionFour_Japanese);
            }
            if (language == "Chinese")
            {
                myInspector.questionFour_Chinese = EditorGUILayout.TextField("Fourth Question (Chinese): ", myInspector.questionFour_Chinese);
            }
            if (language == "Russian")
            {
                myInspector.questionFour_Russian = EditorGUILayout.TextField("Fourth Question (Russian): ", myInspector.questionFour_Russian);
            }
            myInspector.questionFourToID = EditorGUILayout.IntField("Fourth question brings to ID: ", myInspector.questionFourToID);
        }
        #endregion

        GUILayout.Space(30.0f);         //Put some spece between different elements

        if (GUILayout.Button("Add Sentence", GUILayout.MinWidth(50.0f), GUILayout.Height(30.0f)))
        {
            myInspector.AssignScript();
        }
    }