forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Сериализация (http://forum.boolean.name/showthread.php?t=20075)

RegIon 09.11.2015 10:56

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

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

PHP код:

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()] и сериальзовать его?
Или придется класс аналог делать, и дублировать данные?
Что делать с полями которые не нужно сериализовать?

Или Вообще можно не парится, так как юнити уже скрипт сериализует, и проехаться сериализатором по нему?

RegIon 09.11.2015 13:20

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

Пришлось создавать классы, типа трансформа, только урезанные под нужды - с ними все неплохо.

pax 09.11.2015 14:12

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


PS: иконки в паинте нарисовали)

RegIon 09.11.2015 15:19

Ответ: Сериализация
 
Цитата:

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


PS: иконки в паинте нарисовали)

Да, я думаю лучше будет.

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

UPD. Посмотрел тутор, пригодился бы, если бы я уже не сделал это все через XmlSerializer.
Все же приходится создавать свой класс и дублировать поля.

RegIon 10.12.2015 23:25

Ответ: Сериализация
 
Цитата:

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


PS: иконки в паинте нарисовали)

в 5.3 есть удобная фича:
PHP код:

СкриптингДобавлен программный интерфейс JSON APIС его помощью можно быстро конвертировать объекты в формат JSON (и обратно). 


seaman 11.05.2016 17:49

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


Часовой пояс GMT +4, время: 15:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot