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

Общие вопросы о Unity3D

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

Сообщение Leonin 04 июл 2019, 12:04

Здравствуйте!
Возникла проблема с назначением 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;
}
 

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

ЧЯДНТ?
Последний раз редактировалось Leonin 04 июл 2019, 12:41, всего редактировалось 1 раз.
Аватара пользователя
Leonin
UNец
 
Сообщения: 44
Зарегистрирован: 12 янв 2018, 16:59

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

Сообщение Leonin 04 июл 2019, 12:38

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


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 14