|
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
|
||||||
Как сериализовать Список списков списков?22.01.2019, 22:06. Показов 6888. Ответов 14
Метки нет (Все метки)
У меня есть игра, в ней пользователь может сохранять уровни и играть их в будующем. На каждом уровне есть одна или несколько линий состоящийх из точек.Количество точек зависит от того какой длинны линию нарисовал игрок. Линии создаються с помощью компонента LineRenderer. Сначала для теста я решил сохраниять точки при помощи списка списков. Также пришлось разбивать точку Vector3 на три переменные float так как сериализатор не сохраняет Vector3 так как это класс unity а не C#. Однако потом пришлось расширить до списка списков списков так как нужно сохранять точки каждой линии для каждого уровня. Но теперь сериализатор отказалься сохранять списки списков списков. Видимо максимум он может только список списков сохранять. И как же чёрт побери мне сохранить этот список данных.
В общем сейчас сериализованный клас выглядит вот так.
Помогите плиз с этой проблемой если кто знает решение..
0
|
||||||
| 22.01.2019, 22:06 | |
|
Ответы с готовыми решениями:
14
Копирование данных двумерного массива состоящего из списков в список списков. |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 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,574
|
||
| 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
Список списков списков чисел Как сложить сумму из чисел сотен списков и узнать количество списков?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|