При использовании AssetBundles вы можете назначать любой актив любому желаемому пакету. Тем не менее, есть определенные стратегии, которые следует учитывать при настройке пакетов. Эти стратегии группировки предназначены для использования так, как вы считаете нужным для вашего конкретного проекта. Не стесняйтесь комбинировать эти стратегии по своему усмотрению.
Логическая группировка объектов
Логическая группировка сущностей — это когда ресурсы назначаются AssetBundles на основе функциональной части проекта, который они представляют. Сюда входят такие разделы, как пользовательский интерфейс, персонажи, окружение и все остальное, что может часто появляться на протяжении всего жизненного цикла приложения.
Примеры
- Объединение всех текстур и данных макета для экрана пользовательского интерфейса.
- Объединение всех моделей и анимаций для персонажа/набора персонажей
- Объединение текстур и моделей для элементов декораций, используемых на нескольких уровнях.
Логическая группировка объектов идеально подходит для загружаемого контента (DLC), поскольку, разделив все таким образом, вы можете внести изменения в один объект и не требовать загрузки дополнительных, неизменных ресурсов.
Самая большая хитрость для правильной реализации этой стратегии заключается в том, что разработчик, назначающий ресурсы соответствующим пакетам, должен точно знать, когда и где каждый ресурс будет использоваться в проекте.
Группировка типов
Для этой стратегии вы будете назначать ресурсы одинакового типа, такие как звуковые дорожки или файлы языковой локализации, одному AssetBundle.
Группировка по типам — одна из лучших стратегий создания пакетов AssetBundle для использования на нескольких платформах. Например, если ваше аудио сжатиеметод хранения данных, который уменьшает объем требуемого места для хранения. См. Сжатие текстур, Сжатие анимации, Сжатие аудио, Сжатие компоновки.
См. в Словарь, настройки идентичны для платформ Windows и Mac, вы можете упаковать все аудиоданные в AssetBundles сами по себе и повторно используют эти пакеты, в то время как шейдеры, как правило, компилируются с более специфичными для платформы параметрами, поэтому шейдерпрограмма который работает на графическом процессоре. Подробнее
См. в Словарь. повторно используется на окнах. Кроме того, этот метод отлично подходит для обеспечения совместимости ваших AssetBundles с большим количеством версий Unity Player, поскольку форматы и настройки сжатия текстур меняются реже, чем что-то вроде вашего кода scriptsКусок кода, позволяющий создавать собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь или префабыТип ассета, который позволяет хранить GameObject вместе с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов в сцене. Подробнее
См. в Словарь.
Параллельная группировка контента
Параллельная группировка контента – это объединение ресурсов, которые будут загружаться и использоваться одновременно. Вы могли бы думать об этих типах пакетов как об использовании для игры, основанной на уровнях, где каждый уровень содержит совершенно уникальных персонажей, текстуры, музыку и т. д. Вы хотели бы быть абсолютно уверены, что актив в одном из этих AssetBundles используется только в в то же время будут использоваться остальные активы в этом пакете. Наличие зависимости
See in Словарь для одного ресурса внутри пакета Concurrent Content Grouping приведет к значительное увеличение времени загрузки. Вам придется загрузить весь пакет для одного ресурса.
Наиболее распространенный вариант использования пакетов параллельной группировки контента — это пакеты, основанные на сценах. В этой стратегии назначения каждая сценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь, пакет должен содержать большинство или все зависимости этих сцен. р>
Обратите внимание, что проект может и должен сочетать эти стратегии по мере необходимости. Использование оптимальной стратегии распределения активов для любого сценария значительно повышает эффективность любого проекта.
Например, проект может решить сгруппировать свои элементы пользовательского интерфейса (UI) для разных платформ в свой собственный пакет, специфичный для платформы-UI, но сгруппировать свой интерактивный контент по уровню/сцене.
Независимо от стратегии, которой вы придерживаетесь, вот несколько дополнительных советов, о которых полезно всегда помнить:
- Разделить часто обновляемые объекты на AssetBundles отдельно от объектов, которые редко изменяются
- Группируйте объекты, которые могут загружаться одновременно. Например, модель, ее текстуры и анимация.
- Если вы заметили, что несколько объектов в нескольких AssetBundle зависят от одного ресурса из совершенно другого AssetBundle, переместите зависимость в отдельный AssetBundle. Если несколько пакетов AssetBundle ссылаются на одну и ту же группу ресурсов в других пакетах AssetBundle, возможно, стоит объединить эти зависимости в общий пакет AssetBundle, чтобы уменьшить дублирование.
- Если маловероятно, что два набора объектов когда-либо будут загружены одновременно, например ресурсы стандартного и высокого разрешения, убедитесь, что они находятся в своих собственных пакетах AssetBundles.
- Рассмотрите возможность разделения AssetBundle, если одновременно часто загружается менее 50 % этого пакета.
- Рассмотрите возможность объединения пакетов AssetBundle, которые являются небольшими (менее пяти-десяти ресурсов), но контент которых часто загружается одновременно
- Если группа объектов представляет собой просто разные версии одного и того же объекта, рассмотрите вариант AssetBundle.