Save scriptableobject in assets

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Save scriptableobject in assets

Сообщение extravert 05 авг 2014, 13:11

Есть большая и срочная проблема со скриптами, которые я пытаюсь сохранить в ассет.
В общем
Есть у меня класс Storage : ScriptableObject
Экземпляр этого класса хранит в себе экземпляры Item : ScriptableObject
Хранит в виде списка
То есть
Синтаксис:
Используется csharp
public class Storage : ScriptableObject {
       public List<Item> items;
}
 


Все это чудо я сохраняю в asset (на диск, через AssetDatabase.CreateAsset(obj, path);)

Но вот тут и есть проблема.
После закрытия юнити и повторного открытия содержимое списка - нули!
При том когда в списке появляется новый пункт он в инспекторе выглядит вот так
http://prntscr.com/49qexp

То есть пишет какой то TypeMismatch (с чего бы там несоответствие типов только?)

Помогите кто может
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Re: Save scriptableobject in assets

Сообщение extravert 05 авг 2014, 13:20

Предполагаю что ScriptableObject описанные в сборке редактора не сохраняются
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Re: Save scriptableobject in assets

Сообщение Nicloay 05 авг 2014, 13:47

Я вот этот пдоход использую
http://wiki.unity3d.com/index.php?title ... bjectAsset

Я тоже иногда сталкивался с проблемой не сохранения ассетов.
Попробуй вот такой подход.
Если свой редактор - то в редакторе не попробуй SetDirty, MarkAsChanged и т.п.
Если нет, то перед выходом, открой ассет стандартный инспектор и попробуй чтонибудь поменять туда обратно, после этого должно сохраниться
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Save scriptableobject in assets

Сообщение BenjaminMoore 05 авг 2014, 13:51

Item : ScriptableObject

их тоже нужно сохранять как ассеты, для удобства их можно вешать на тот же главный ассет Storage
нужны ссылки на объект, а у вас айтемы получаются висят в воздухе и вы сохраняете только объект Storage, вот пока они висят, ссылки есть, после перезапуска они конечно же выгружаются из памяти и восстановить их не откуда
если item были бы обычными сериализуемыми классами, они бы сериализовались как часть Storage
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Save scriptableobject in assets

Сообщение Nicloay 05 авг 2014, 19:31

BenjaminMoore писал(а):
Item : ScriptableObject

их тоже нужно сохранять как ассеты, для удобства их можно вешать на тот же главный ассет Storage
нужны ссылки на объект, а у вас айтемы получаются висят в воздухе и вы сохраняете только объект Storage, вот пока они висят, ссылки есть, после перезапуска они конечно же выгружаются из памяти и восстановить их не откуда
если item были бы обычными сериализуемыми классами, они бы сериализовались как часть Storage

ну дак вот их и надо пометить как [Serializable] нафига scriptable object-ы то хранить?
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Save scriptableobject in assets

Сообщение Neyl 05 авг 2014, 21:01

Nicloay писал(а):нафига scriptable object-ы то хранить?

Это может потребоваться, если используется полиморфизм, например в списке List<Item> будут хранится производные классы Weapon : Item : ScriptableObject, Armor : Item : ScriptableObject, Potion : Item : ScriptableObject и т.д.
Если же такого не планируется, то действительно проще наследоваться от объекта и помечать его [Serializable].
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17


Вернуться в Editor

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1