我有几个编辑器窗口,在其中通过对话框设置属性值。对话框很大,有一堆嵌套属性。一般来说,使用窗口看起来像这样:
using UnityEngine;
using UnityEditor;
public class MyEditorWindow : EditorWindow
{
[MenuItem("Window/My Editor Window")]
public static void ShowWindow()
{
GetWindow<MyEditorWindow>();
}
// список свойств окна к изменению
public string[] Strings = { "Larry", "Curly", "Moe" };
// ссылка на сериализованный объект где будут наши свойства окна
SerializedObject so;
private void OnEnable()
{
//здесь инициируем объект
so = new SerializedObject(this);
}
void OnGUI()
{
so.Update();
//дальше выводим нужный интерфейс через EditorGUILayout, а ля
SerializedProperty stringsProperty = so.FindProperty("Strings");
EditorGUILayout.PropertyField(stringsProperty, true);
so.ApplyModifiedProperties(); // Вот здесь периодически и падает ошибка
}
}
通过搜索,我发现有一个问题,当场景中的对象失去焦点时,以及在更新对象属性时在对话框之间进行转换时,so.ApplyModifiedProperties();编辑器经常会生成错误
SerializedObject 目标已被销毁
我尝试将渲染包含在BeginChange和中EndChange,但没有帮助。这似乎不会影响对话框中数据的完整性,但很烦人。
有谁知道如何处理这个问题?