|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
||||||
Как сериализовать Список списков списков?22.01.2019, 22:06. Показов 6811. Ответов 14
Метки нет (Все метки)
У меня есть игра, в ней пользователь может сохранять уровни и играть их в будующем. На каждом уровне есть одна или несколько линий состоящийх из точек.Количество точек зависит от того какой длинны линию нарисовал игрок. Линии создаються с помощью компонента LineRenderer. Сначала для теста я решил сохраниять точки при помощи списка списков. Также пришлось разбивать точку Vector3 на три переменные float так как сериализатор не сохраняет Vector3 так как это класс unity а не C#. Однако потом пришлось расширить до списка списков списков так как нужно сохранять точки каждой линии для каждого уровня. Но теперь сериализатор отказалься сохранять списки списков списков. Видимо максимум он может только список списков сохранять. И как же чёрт побери мне сохранить этот список данных.
В общем сейчас сериализованный клас выглядит вот так.
Помогите плиз с этой проблемой если кто знает решение..
0
|
||||||
| 22.01.2019, 22:06 | |
|
Ответы с готовыми решениями:
14
Копирование данных двумерного массива состоящего из списков в список списков. |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
|
|
| 22.01.2019, 22:16 | |
|
Как сериализуете? Используете Newtonsoft.Json для сериализации? Что-то другое?
1
|
|
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
| 23.01.2019, 01:02 | |
|
Встроенный JsonUtility должен принимать
1
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
|
||
| 23.01.2019, 01:10 | ||
|
1
|
||
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
| 23.01.2019, 09:35 | |
|
Someone007, может АВТОсвойства, а не свойства? У меня нормально массив Vector3 сериализовался. И массив классов, где классы с массивами Vector3 - тоже сериализовался.
1
|
|
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
|
| 23.01.2019, 10:49 [ТС] | |
|
Я использую баннерную серриализацию. Так как давно еще знающие люди ее советовали. Да и читал я про нее много хорошего.
Добавлено через 17 минут Тфу ты, бинарную. Сорри за кламбур пишу с телефона.
0
|
|
|
|
||||||
| 23.01.2019, 11:03 | ||||||
|
SERG__ZV,
Во-первых, что значит "сериализатор отказалься сохранять"? Выдается ошибка? Приведите полный текст ошибки. А лучше, выложите тестовый проект, который можно запустить и увидеть ошибку. У меня например ваш класс сериализуется нормально. Во-вторых, почему у вас класс для сериализации такой уродливый? Вы разве сами не чувствуете, что List<List<List<float>>> - это мягко говоря не очень?Почему не сделать нормальные классы, с нормальными именами, по правилам ООП? Тем более у вас же в коментах уже написано как это должно примерно выглядеть. На верхнем уровне должен быть класс Levels, который будет содержать список уровней:
А класс Point должен реализовать кастомную сериализацию, которая сможет сериализовать Vector3. И тогда ваша модель станет более красивой, расширяемой, и глядишь и ошибка сериализации уйдет.
1
|
||||||
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
|
| 23.01.2019, 14:57 [ТС] | |
|
Хорошо домой приду выложу ошибку. Тот пример что вы привели это сериализация списка.
Список float у меня тоже сериализуеться. Список списков тоже сериализуеться. А когда я вложил это в еще одну конструкцию. То есть сделал список списков списков как на примере выше то стала появляться ошибка. List exception не возможно преобразовать list ..... В list... Домой приду выложу ошибку. Могу даже пример собрать в котором эта ошибка будет. Добавлено через 8 минут Во-вторых, почему у вас класс для сериализации такой уродливый? Вы разве сами не чувствуете, что List<List<List<float>>> - это мягко говоря не очень? Чувствую. Но я не знаю как реализовать более удобным способом.. Как это должно выглядеть я не знаю потому как сериализатор не хочет сохранять никакой класс созданный мной в ручную а только те что есть изначально в c#. Гуглил на тему как сериализовать класс GameObject и vector3 там писали что этот классы юнити и их целиком не сериализовать. Добавлено через 4 минуты Ах да игра собирается и запускаеться под андроид возможно это тоже как то влияет.. Добавлено через 1 час 20 минут Я тогда лучше сразу сделаю пример того как вы сказали и если что-то не получится выложу сюда. И правда если есть лучший путь зачем исправлять баги на худшем решении задачи...
0
|
|
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
| 23.01.2019, 17:09 | |
|
SERG__ZV, лучше опишите смысл тройных вложенных списков
1
|
|
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
||
| 23.01.2019, 21:45 [ТС] | ||
|
Я использовал тройной список для того чтобы сохранить все точки всех линий на всех уровнях созданных игроком.
Первая ступень списка означает уровень, вторая ступень означает линию, третяя ступень означает точку. Но я так делал потому что думал что бинарная сериализация может использовать лишь стандартные классы библотеки C# но не описанные мной лично или в unity. Сейчас попробую реализовать пример который мне предложили выше. Добавлено через 41 минуту Проблема со списками решена, оказываеться ошибка была потому что я переписал списки списков в списки списков списков. Но при этом пыталься загрузить старое сохранение где были сохранены списки списков. Естественно нужно было всего лишь создать новое сохранение с обновлённым классом. Однако раз тут предложили лучшую и более удобную систему я всё таки доделаю её и выложу сюда пример так как скорее всего он работать не будет( Поэтому вопрос отстаёться открытым. Добавлено через 25 минут
Что такое кастомная сериализация? Разве не нужно сериализовывать верхний класс целиком? А именно класс Levels так было бы удобнее если это возможно... Вот что у меня получилось. Так как с классами я не совсем понял осталься пустой код.
0
|
||
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
|
| 23.01.2019, 21:48 [ТС] | |
|
0
|
|
|
|
||||||||||||
| 23.01.2019, 22:15 | ||||||||||||
Сообщение было отмечено SERG__ZV как решение
Решение
2
|
||||||||||||
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
|
| 23.01.2019, 22:40 [ТС] | |
|
Спасибо завтра прийду с работы буду разбирать.
0
|
|
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
||||||
| 25.01.2019, 22:31 [ТС] | ||||||
|
Почти разобрал первый скрипт) Ну и сложнющий он для меня. Пришлось подучиться). У меня вопрос к вашему коду.
Почему метод с названием Получить данные объекта по сути добавляет данные в него, ведь судя по названию он должен оттуда их получать...
Насчёт интерфейса неправильный коментарий выше, оказываеться их не наследуют а реализуют) Добавлено через 30 секунд Но вопрос о методе в силе)
0
|
||||||
|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
|
| 28.01.2019, 21:55 [ТС] | |
|
Наконецто всё разобрал. Код работает, сериализация десериализация прописанна у вас гораздо короче чем я делал с помошью streamwriter и streamrider. И создание своих классов тоже круто помогло. Код выглядит гораздо красивее и короче. Пришлось подучиться и разобрать то что было неясно но это даэе хорошо теперь я чуть больше понимаю. Ещё раз спасибо за ваши труды.
1
|
|
| 28.01.2019, 21:55 | |
|
Помогаю со студенческими работами здесь
15
Список списков списков чисел Как сложить сумму из чисел сотен списков и узнать количество списков?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|