Страница 1 из 1

Проблема с SerializedProperty [решено]

СообщениеДобавлено: 04 июл 2019, 12:04
Leonin
Здравствуйте!
Возникла проблема с назначением ObjectRefernceValue для SerializedProperty. Ошибок никаких не пишет. Если трассировать код, то видно, что sp.objectReferenceValue не назначается (равен null), при этом вылезают ошибки (причем без трассировки все норм якобы). Shape наследуется от ScriptableObject. Работаю со списком List<Shape>, в который пытаюсь запихнуть созданный Shape. Вот листинг:
Синтаксис:
Используется csharp
SerializedProperty preset = serializedObject.FindProperty("shapePreset");
if (GUILayout.Button("Add new shape", GUILayout.Height(30)))
{
        Shape shape = CreateInstance<Shape>();
        preset.arraySize++;
        SerializedProperty sp = preset.GetArrayElementAtIndex(preset.arraySize - 1);
        sp.objectReferenceValue = shape;
}
 

Вот такие ошибки вылезают при трассировке:
Скрытый текст:
Изображение

ЧЯДНТ?

Re: Проблема с SerializedProperty

СообщениеДобавлено: 04 июл 2019, 12:38
Leonin
Проблема решена:
Я создавал объект (Shape), который создается в сцене при вызове CreateInstance<Shape>(). При этом сам код вызывался для ассета (ScriptableObject), который физически сохранен в проекте, а не в сцене. А так как объекты в проекте не могут содержать ссылки на объекты из сцены - objectReferenceValue не мог содержать ссылку на созданный через CreateInstance объект. Жаль, что нормального исключения для этого случая не выбрасывалось :\
UPD: точнее, я не сохранял созданный объект как ассет вообще. Решил с помощью AssetDatabase.AddObjectToAsset()