using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;
[CustomEditor(typeof(DialogueTrigger))]
public class DialogueTriggerEditor : Editor
{
private SerializedProperty _dialogues;
private SerializedProperty _conversations;
private SerializedProperty old_Conversations;
private void OnEnable()
{
_conversations = serializedObject.FindProperty("conversations");
old_Conversations.arraySize = _conversations.arraySize;
}
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
serializedObject.Update();
_conversations.arraySize = EditorGUILayout.IntField("Conversations Size", _conversations.arraySize);
if (old_Conversations.arraySize != _conversations.arraySize)
{
for (int x = 0; x < _conversations.arraySize; x++)
{
var conversation = _conversations.GetArrayElementAtIndex(x);
var Id = conversation.FindPropertyRelative("conversationName");
EditorGUILayout.PropertyField(Id);
}
}
OnInspectorGUI 中的所有内容都非常快速地一遍又一遍地调用。所以它不停地循环。
我添加了 _conversations 的旧副本:
private SerializedProperty old_Conversations;
我第一次尝试将它分配给 OnEnable 中的原始 _conversations:
old_Conversations.arraySize = _conversations.arraySize;
但是我使用了一个断点并且 OnEnable 从未调用过。
然后在循环之前我正在做检查:
if (old_Conversations.arraySize != _conversations.arraySize)
在底部,我再次使两者相等。
但它不起作用。当更改 _conversations 的大小时,它总是将它改回 1 并且之后什么都不做。
我的主要目标是以某种方式在每次大小更改时只调用一次循环。如果大小为 1、5 或 10,它工作正常,但如果我将大小更改为 100,一切都会变慢,几乎冻结。
慕娘9325324
FFIVE
相关分类