Как я могу сбросить / очистить serializedObject.Update (); ? Он содержит старые диалоги - PullRequest
0 голосов
/ 03 апреля 2019
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;

[CustomEditor(typeof(DialogueTrigger))]
public class DialogueTriggerEditor : Editor
{
    private SerializedProperty _conversations;

    private void OnEnable()
    {
        _conversations = serializedObject.FindProperty("conversations");
    }

    public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();

        serializedObject.Update();

        _conversations.arraySize = EditorGUILayout.IntField("Conversations Size", _conversations.arraySize);

        for (int x = 0; x < _conversations.arraySize; x++)
        {
            var conversation = _conversations.GetArrayElementAtIndex(x);

            var conversationName = conversation.FindPropertyRelative("conversationName");

            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(conversationName);

            EditorGUI.indentLevel++;
            var _dialogues = conversation.FindPropertyRelative("Dialogues");

            _dialogues.arraySize = EditorGUILayout.IntField("Dialogues size", _dialogues.arraySize);

            for (int i = 0; i < _dialogues.arraySize; i++)
            {
                var dialogue = _dialogues.GetArrayElementAtIndex(i);
                EditorGUI.indentLevel++;
                EditorGUILayout.PropertyField(dialogue, new GUIContent("Dialogue " + i), true);

                EditorGUI.indentLevel--;
            }

            if (_dialogues.arraySize > 0)
            {
                if (GUILayout.Button("Save Conversation"))
                {

                }
            }

            EditorGUI.indentLevel--;
            EditorGUI.indentLevel--;
        }

        serializedObject.ApplyModifiedProperties();
    }
}

Кажется, что serializedObject содержит старые 3 диалоговых окна с текстовыми именами и предложениями, даже если я установил размер беседы равным 0, а все диалоговые окна также установили в инспекторе значение 0, но при использовании точки останова на строке:

serializedObject.Update();

Я вижу на serializedObject, что он содержит старые диалоги. Либо при запуске игры, либо в редакторе я вижу старые диалоги. И затем при запуске игры он использует эти диалоги.

Но я хочу, чтобы, если я установил размер разговоров на 0 или размер диалогов на 0, чтобы удалить все предложения диалогов, имена всех текстов.

Вот скриншот, показывающий, как использовать точку останова перед запуском игры: есть 3 имени и предложения в диалогах:

Dialogues

А это скриншот редактора: все пусто, размер разговора установлен на 0. Но все же при запуске игры он берет / получает старые диалоги из serializedObject.

Я пока не уверен, где хранятся или хранятся эти старые 3 диалога. Я пытался убрать предметы для разговоров. Может быть, я должен очистить или сделать что-то новое.

Я даже искал в реестре текст.

Empty

А это скриншот при запуске игры. Он продолжает отображаться либо до запуска игры и использования точки останова, либо после запуска игры:

Dialogues

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...