Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 09.11.2015, 07:56   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Сериализация

Я так и не вкурил, можно ли зериализовать классы, унаследованные от MonoBechavior.

Есть класс с много-много приватных и публичных методов, которые нужно сохранить и загрузить потом.

public class objectConfigure MonoBehaviour {

    public 
bool importan false;
    public 
bool finishTrigger false;
    public 
bool moveAsStaticObject false;
    public 
bool rotateAsStaticObject false;

    public 
bool locked false;
    public 
Sprite icon;
    public 
string Name;
    public 
Transform pullPrefab;

    public 
Transform moveTransform;
    public 
Transform rotateTransform;


    private 
Rigidbody2D moveRigid;
    private 
Rigidbody2D rotateRigid;
    
    private 
Vector3 moveDefPos;
    private 
Quaternion moveDefRot;
    
    
    private 
Vector3 rotDefPos;
    private 
Quaternion rotDefRot;


    
//***методы различные

Можно ли просто над классом написать [Serialization()] и сериальзовать его?
Или придется класс аналог делать, и дублировать данные?
Что делать с полями которые не нужно сериализовать?

Или Вообще можно не парится, так как юнити уже скрипт сериализует, и проехаться сериализатором по нему?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 09.11.2015, 10:20   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Сериализация

Не сериализует в XML, выдает пустой файл.

Пришлось создавать классы, типа трансформа, только урезанные под нужды - с ними все неплохо.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 09.11.2015, 11:12   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,503
Написано 2,958 полезных сообщений
(для 5,224 пользователей)
Ответ: Сериализация

А может тебе просто надо ScriptableObject использовать? Мы описания блоков для стимкрафта храним в ассетах с помощью этого класса.


PS: иконки в паинте нарисовали)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (09.11.2015)
Старый 09.11.2015, 12:19   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Сериализация

Сообщение от pax Посмотреть сообщение
А может тебе просто надо ScriptableObject использовать? Мы описания блоков для стимкрафта храним в ассетах с помощью этого класса.


PS: иконки в паинте нарисовали)
Да, я думаю лучше будет.

PS. Делаю игрулю типо CrasyMashines, и много кофигурируемых объектов.

UPD. Посмотрел тутор, пригодился бы, если бы я уже не сделал это все через XmlSerializer.
Все же приходится создавать свой класс и дублировать поля.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 10.12.2015, 20:25   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Сериализация

Сообщение от pax Посмотреть сообщение
А может тебе просто надо ScriptableObject использовать? Мы описания блоков для стимкрафта храним в ассетах с помощью этого класса.


PS: иконки в паинте нарисовали)
в 5.3 есть удобная фича:
СкриптингДобавлен программный интерфейс JSON APIС его помощью можно быстро конвертировать объекты в формат JSON (и обратно). 
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Andvrok (10.12.2015)
Старый 11.05.2016, 14:49   #6
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Мурманск
Сообщений: 276
Написано 100 полезных сообщений
(для 174 пользователей)
Ответ: Сериализация

Перед приватными методами обязательно [SerializeField], статик и реадонли поля не сериализуются. Свойства не сериализуются (вроде). Остальное должно сериализоваться. Перед классами - наследниками MonoBehaviour и ScriptableObject [Serializable] не нужен. Перед своими нужен.
По крайней мере в бинарник Юнити и в JSon. С XML не работал.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 21:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com