12.5 C
Brasília
segunda-feira, junho 16, 2025

Como posso usar o editorgui.indentlevel ++; Para construir a estrutura certa no meu script de editor de inspetor?


utilizing System.Collections;
utilizing System.Collections.Generic;
utilizing UnityEditor;
utilizing UnityEditorInternal;
utilizing UnityEngine;

(CustomEditor(typeof(DialogueTrigger)))
public class DialogueTriggerEditor : Editor
{
    non-public SerializedProperty _conversations;

    non-public void OnEnable()
    {
        _conversations = serializedObject.FindProperty("conversations");
    }

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

        serializedObject.Replace();

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

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

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

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

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

            _dialogues.arraySize = EditorGUILayout.IntField("Dialogues dimension", _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 Dialog"))
                {

                }
            }

            EditorGUI.indentLevel--;
        }

        serializedObject.ApplyModifiedProperties();
    }
}

Estou usando em alguns lugares o editorgui.indentlevel ++; Mas o resultado é o seguinte:

Como posso usar o editorgui.indentlevel ++; Para construir a estrutura certa no meu script de editor de inspetor?

Mas eu quero que seja assim:

Conversations Measurement
     Dialog Title
          Dialogue dimension
     Dialog Title
          Dialogue dimension
     Dialog Title
          Dialogue dimension
     Dialog Title
          Dialogue dimension

É assim que deve ser no inspetor.

O problema está nesta parte:

EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(conversationName);
EditorGUI.indentLevel++;
var _dialogues = dialog.FindPropertyRelative("Dialogues");
_dialogues.arraySize = EditorGUILayout.IntField("Dialogues dimension", _dialogues.arraySize);

Não posso fazer o nome da “conversa” dos “diálogos” e do “tamanho dos diálogos” da mesma forma que eu queria.

Os “diálogos” estão bem, mas os outros não estão.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0SubscribersSubscribe
- Advertisement -spot_img

Latest Articles