Какой должна быть архитектура кода для загрузки и кэширования автономных данных (изображения / видео / 3d-модели)? - PullRequest
0 голосов
/ 17 декабря 2018

Я разрабатываю приложение, в котором есть 3D-комната.Каждая комната представляет собой 3d модель и может содержать медиа-доскикаждая медиа доска содержит изображения в виде слайдов или видео.Я создал следующие модели данных:

class Room {
 string id;
 string room3dmodellink;
 List<Mediaboards> mediaboards;
}

class Mediaboard{
 string id;
 string mediaboard3dModleLink;
 List<Slide> slides;
}

class Slide{
 string id;
 string imageLink;
}

Эти модели данных заполняются с сервера.Мне нужно знать, как спроектировать этот код для загрузки и кэширования всех моделей и изображений в локальном хранилище и получения / загрузки из кэша по требованию. Также должен быть механизм для обновления кэша / автономных данных.Где я должен хранить путь к локально загруженным моделям и изображениям?Хранение пути загруженных изображений / моделей в этих моделях не имеет смысла для меня.Нужно предложение / решение.Спасибо

PS: я использую Unity 3D и C #.

1 Ответ

0 голосов
/ 18 декабря 2018

Unity скрывает такую ​​информацию в PlayerPrefs .Это позволяет поддерживать все на всех платформах.

Вы также можете использовать Application.persistentDataPath , который также доступен для всех платформ.Внутри этого механизмы хранения принадлежат вам.

Для обработки этого кэша каждому объекту потребуется уникальный идентификатор, и вы можете проверить наличие версий (или любого эквивалентного значения), чтобы вы знали, когда требуется кэшированный объектподлежит обновлению.

Кэш должен включать в себя некую индексную таблицу, которая позволит извлекать нужный элемент в кэш по его идентификатору.Эта таблица является частью кэша (поэтому она тоже находится внутри Application.persistentDataPath ).

Возможно, вы также захотите удалить самые старые или редко используемые элементы.Таким образом, ваш кеш должен будет хранить эту информацию.

...