Choosing the right runtime asset loading technology for RT3D projects

Apr 25, 2025
Factory floor model in Unity Asset Manager using 3D data streaming

Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Проекты, работающие в режиме реального времени с 3D (RT3D), становятся все более сложными, что требует более интеллектуальных подходов к управлению активами и загрузке данных во время выполнения. Разработчики постоянно расширяют границы возможного, и по мере роста сложности и масштабов этих проектов обеспечение бесперебойной работы и исключительного пользовательского опыта становится важнее, чем когда-либо. Хотя Unity Asset Manager предоставляет комплексное решение для организации, управления и оптимизации ресурсов, разработчики по-прежнему сталкиваются с проблемой выбора подходящей технологии для загрузки ресурсов в среды выполнения.

Независимо от того, передаете ли вы контент из сети доставки контента (CDN), динамически загружаете локальные ресурсы или управляете памятью посредством циклов загрузки/выгрузки, выбор правильной технологии загрузки ресурсов имеет решающее значение для успеха вашего проекта.

Unity предлагает несколько подходов к загрузке ресурсов во время выполнения, каждый из которых адаптирован к конкретным потребностям и целям проекта. Цель этой электронной книги — помочь разработчикам разобраться в доступных вариантах, сравнить их преимущества и выбрать идеальное решение для вашего проекта.

Понимание процесса загрузки ресурсов во время выполнения

Загрузка ресурсов во время выполнения (Runtime asset loading) — это процесс загрузки и выгрузки контента в вашем приложении в процессе работы. Это может означать:

  • Загрузка нового контента из CDN.
  • Загрузка локальных ресурсов по запросу
  • Управление памятью путем выгрузки неиспользуемого содержимого.
  • Потоковая передача многоугольников в прогрессивном режиме

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

Разберитесь в доступных вариантах.

Unity предлагает несколько подходов для решения подобных задач, каждый из которых оптимизирован для различных вариантов использования.

  1. AssetBundles/ Addressables
    1. Создано специально для проектов Unity .
    2. Обрабатывает все типы ресурсов Unity.
    3. В целом, лучше всего подходит для приложений Unity .
      1. где приоритетом является эффективное управление памятью,
      2. где дополнения (DLC) будут доставляться по беспроводной сети.
      3. а также для игр и приложений с поддержкой онлайн-сервисов и регулярными обновлениями контента (сезонные события, новые персонажи, обновления продуктов).
  2. glTF
    1. Решение, не зависящее от платформы и не требующее участия Unity .
    2. Сосредоточено на чисто 3D контенте.
    3. В целом, лучше всего подходит для всех приложений, работающих в режиме реального времени и требующих гибкой загрузки исходных 3D данных, а также кроссплатформенной совместимости.
  3. 3DDS (Unity 3D Data Streaming)
    1. Платформонезависимое решение, позволяющее визуализировать 3D модели, такие как данные CAD и BIM.
    2. Создание и визуализация ресурсов в Unity Asset Manager одним щелчком мыши
      1. Загружает только релевантный контент в наилучшем качестве.
    3. Как правило, лучше всего подходит для крупномасштабной визуализации, где пользователи могут изучать очень сложные и детализированные модели на любом устройстве с прогрессивной загрузкой.

На первый взгляд, эти инструменты могут показаться взаимозаменяемыми. Однако каждая из них превосходно проявляет себя в уникальных сценариях, что делает их более подходящими для конкретных задач. Выбор подходящей технологии сводится к сопоставлению сильных сторон инструмента с потребностями вашего проекта.

Сделать правильный выбор

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

С помощью AssetBundles вы можете создать приложение с одной практически пустой сценой и динамически загружать остальную часть игры оттуда.

С помощью AssetBundles вы можете создать приложение с практически пустой сценой и динамически загружать остальную часть игры или приложения оттуда.

AssetBundles и Addressables

Пакет Addressables — это система, разработанная специально для Unity, которая предназначена для:

  • Оптимизируйте загрузку ресурсов во время выполнения.
  • Включите отслеживание зависимостей, версионирование контента, несколько путей загрузки (локальный/удаленный), сетевую доставку и кэширование.

AssetBundles — это базовая технология, которая обрабатывает фактическую упаковку и загрузку ресурсов на более низком уровне; Addressables — это высокоуровневая система, построенная поверх AssetBundles, которая обеспечивает более удобный пользовательский интерфейс, автоматизированное управление зависимостями и упрощенную загрузку во время выполнения. AssetBundles отлично справляется с управлением сложным игровым контентом. Он также оптимизирован для конкретной целевой сборки, версии Unity и платформы. Они идеально подходят, когда вам нужно:

  • Поддерживается работа с различными типами ресурсов, включая текстуры, звуки, сцены, префабы и многое другое.
  • Управление зависимостями, как это реализовано в Unity , разрешает зависимости между ресурсами.
  • Управление версиями
    • С помощью Addressables вы получаете каталог, который отслеживает версии ресурсов и их зависимости, поэтому при обновлении контента система может точно определить, какие пакеты необходимо загрузить заново.
    • Это особенно полезно для игр, выходящих в режиме реального времени, где вы хотите выпускать обновления контента (например, сезонные наборы или события), не заставляя игроков заново скачивать всю игру.
  • Оптимизировано для Unity, специфично для платформы.

Идеальный вариант использования:

Игра на Unity , требующая эффективного управления памятью и сокращения времени загрузки, с использованием различных типов ресурсов и/или с регулярными обновлениями контента. Оптимизированные ресурсы не обязательно использовать совместно в разных средах выполнения.

Почему это работает: Вы можете загружать контент по запросу, используя «адрес» ресурса или ссылку на ресурс (AssetReference), и система Addressables автоматически позаботится обо всем остальном, независимо от того, кэширован ли этот контент уже на устройстве или все еще размещен удаленно в вашей CDN. Среда выполнения может загружать новые пакеты контента без необходимости полного обновления приложения. Конечные пользователи получают новый сезонный контент, при этом сохраняется высокая производительность и эффективно управляется память.

Пакет Unity glTFast (com.unity.cloud.gltfast) поддерживает импорт и экспорт 3D файлов glTF™ как во время выполнения, так и в редакторе.

Пакет Unity glTFast (com.unity.cloud.gltfast) поддерживает импорт и экспорт 3D файлов glTF™ как во время выполнения, так и в редакторе.

загрузка glTF

glTF и .GLB — это, по сути, один и тот же формат, но упакованный по-разному: glTF — это текстовый формат с отдельными файлами (текстуры, бинарные данные и т. д.), что делает его отличным инструментом для разработки и отладки, в то время как GLB объединяет все в один бинарный файл, что делает его более эффективным для распространения и загрузки во время выполнения.

glTF предоставляет упрощенное решение для загрузки 3D моделей с использованием бесплатного пакета glTFast от Unity. Рассмотрите этот вариант, если вам это необходимо:

  • Простая загрузка 3D модели
    • При использовании GLB-библиотек зависимости необходимо закладывать в файл при экспорте или разрешать вручную.
  • Кроссплатформенная совместимость
  • Быстрая реализация
  • Поддержка стандартных форматов, не зависящая от версии Unity или платформы.

Идеальный вариант использования:

Простое приложение для просмотра моделей, в котором приоритетами являются быстрая загрузка и поддержка стандартных форматов. Если вам необходимо повторно использовать ресурс в разных проектах RT3D без необходимости их перекомпиляции, GLB — это то, что вам нужно. Конкретный пример — это приложение для электронной коммерции, где один пользователь может просмотреть тысячи товаров.

Другой пример — проекты, в которых контент, который может быть персонализирован пользователями, например, пользовательские аватары или аксессуары, требует стандартного формата, который можно гибко создавать.

Почему это работает: GLB — это 3D формат веб-технологий. Данные GLB доступны во многих точках взаимодействия.

 Модель производственного цеха в Unity Asset Manager , созданная с помощью 3DDS.

Используйте потоковую передачу данных Unity 3D для динамической загрузки только необходимых частей модели, чтобы сделать их доступными для просмотра на любом устройстве, независимо от размера модели.

3DDS (потоковая передача данных Unity 3D )

Unity 3D Data Streaming — это сервис потоковой передачи полигонов, позволяющий разработчикам передавать статические 3D -объекты и окружения непосредственно на устройства пользователей. Данные предварительно обрабатываются в Unity Asset Manager с использованием технологии Pixyz для автоматической оптимизации их распространения в исполняемом приложении. Загрузка во время выполнения также осуществляется с помощью технологии gltFast от Unity.

В вашем клиенте пакет 3D Data Streaming позволяет загружать модель, используя встроенные оптимизации, что еще больше уменьшает объем памяти, занимаемый моделью вне камеры, при этом обеспечивая полную детализацию при ближайшем рассмотрении.

3DDS превосходно справляется с обработкой крупномасштабных моделей и сложных визуализаций, сохраняя при этом все метаданные компонентов вашей модели. Это оптимальный выбор для:

  • Крупномасштабные CAD и BIM модели
  • Мгновенный первый пиксель
  • Требования к прогрессивной нагрузке
  • Единый источник активов / несколько целевых платформ
  • Оптимизированная по памяти загрузка для каждого целевого устройства
  • Навигация и изучение сложных иерархий моделей

Идеальный вариант использования:

Виртуальная прогулка по вашим моделям, которые вы никогда не могли отобразить в работающем приложении.

Приложение для архитектурной или инженерной визуализации и анализа, имеющее доступ к метаданным или свойствам, относящимся к подробным CAD- или BIM-моделям, которые невозможно загрузить полностью из-за ограниченной памяти и возможностей рендеринга устройства.

Принимая решение

Если вы разрабатываете игру с помощью Unity, то Addressables, как правило, является рекомендуемым решением. Вот почему:

  • Создан специально для рабочего процесса разработки Unity.
  • Оптимизировано для повышения производительности во время выполнения.
  • Интегрирована с системой управления памятью Unity.
  • Поддерживает сложные зависимости между активами.
  • Эффективно обрабатывает различные типы активов.

Исключение: Контент, создаваемый пользователями. Если ваша игра включает контент, создаваемый пользователями (например, пользовательские аватары или предметы), рассмотрите возможность использования GLB:

  • Стандартный формат делает создание контента более доступным.
  • Улучшена долговременная совместимость между версиями Unity .
  • Упрощенная интеграция со сторонними сервисами (например, аватарами ReadyPlayerMe).

Исключение: Игра на движке Unity , основанная на системе компонентов сущностей (ECS) . Если вы используете архитектуру ECS в Unity, вам следует использовать систему управления контентом Entities Content Management для управления ресурсами во время выполнения.

В случае промышленных проектов выбор в большей степени зависит от конкретных требований.

Выбирайте GLB, когда:

  • Работа со стандартными 3D моделями
  • Необходима кроссплатформенная совместимость.
  • Обработка контента, загруженного пользователями.
  • Требуются обновления, не зависящие от платформы.
  • Требуется долговременная стабильность формата.

Выбирайте 3DDS, когда:

  • Работа с большими CAD/BIM-моделями
  • Необходима прогрессивная нагрузка.
  • Требуется оптимизация памяти.
  • Сохранение сложных иерархий и метаданных является приоритетной задачей.
  • Необходимо динамическое масштабирование точности.
Художник-техник загружает модель погрузчика в Unity Asset Manager.

Начните работу с Asset Manager

Unity Asset Manager помогает организовать и подготовить ваши ресурсы перед запуском программы, создавая эффективный конвейер для любой выбранной вами стратегии загрузки. Интегрированный с редактором Unity и решением Unity для подготовки данных Pixyz , Asset Manager может:

  • Централизуйте исходные ресурсы на всех этапах — от создания и доработки до конечного состояния.
  • Преобразовать и подготовить ресурсы для развертывания в процессе выполнения.
  • Эффективно организуйте ресурсы в рамках рабочего процесса редактора Unity.
  • Преобразование между различными форматами активов
  • Выступает в качестве хранилища 3D файлов в реальном времени, которые могут быть использованы в процессе выполнения программы.

По мере роста вашего проекта Asset Manager масштабируется вместе с вашей лицензией Unity Editor, предоставляя дополнительные возможности хранения и управления.

Независимо от того, готовите ли вы ресурсы для Asset Bundles, генерируете файлы glTF или настраиваете потоковую передачу 3DDS, Unity Asset Manager поможет вам поддерживать порядок и контроль в процессе разработки.


Unity Asset Manager позволяет напрямую импортировать данные в приложения, работающие во время выполнения. После генерации данных gLTF и 3DDS их можно мгновенно просмотреть в режиме реального времени, без затрат времени на сборку. Это упрощает процесс интеграции данных CAD и BIM для промышленных заказчиков непосредственно в приложения Unity .

Скриншот элементов офисной мебели для цифрового двойника офиса в Unity Asset Manager.

Подробнее

Если вы хотите узнать больше о решениях Unity Asset Manager , ознакомьтесь с этими ресурсами:

Есть вопросы?

Поделитесь своим опытом и задайте вопросы о загрузке ресурсов в Unity. Присоединяйтесь к нам на Unity Discussions .

Начните работу с Unity Asset Manager