Вывод контента сборки
При создании сборки проекта Unity папка Data (или эквивалентная папка на целевой платформе) содержит серийные файлы, которые составляют содержимое приложения. Основные файлы в папке сборки Data, связанные с загрузкой ассетов, являются следующими:
globalgamemanager: Содержит данные движка, глобальные настройки проекта (например, Настройки качества, Настройки графики, Настройки физики, Метки и Слои).globalgamemanager.assets: Содержит ассеты, на которые делается ссылка из файлаglobalgamemanager. Это может включать ScriptableObjects, например, настройки HDRP или URP, и другие ассеты, на которые делается ссылка из этих настроек.resources.assets: Содержит все ассеты, расположенные в любой папке с именемResourcesв вашем проекте. Эти ассеты всегда включены в сборку, независимо от того, прямо ли на них ссылается любая сцена, и могут быть загружены сResources.Load.levelфайлы, к которым добавлено число, например,level0,level1: Каждыйlevelфайл соответствует Scene списку в профилях сборкив порядке их появления. Эти файлы содержат GameObjects и компоненты, специфичные для этой сцены.- Файлы
sharedassetsс добавлением номера, например,sharedassets0,sharedassets1: Эти файлы содержат ассеты, на которые ссылается ссылка на сцену. Их нумерация соответствует сцене в порядке создания сцены, которая ссылается на них в первую очередь. Resources/unity_builtin_extra: Содержит встроенные шейдеры, если на них ссылается сборка.Resources/unity default resources: Содержит встроенные ресурсы, которые всегда включаются в сборку, такие как стандартные материалы и шрифты. Этот файл предварительно компилируется для каждой целевой платформы и распространяется как часть установки Unity Editor. Unity копирует файл в вывод как часть процесса сборки.
Важная: Точный макет и форматы файлов, которые Unity использования могут меняться между версиями, так что не пишите код, который зависит от конкретной конвенции именования для выходных файлов.
Двоичные данные
Каждый серийный файл в сборке может сопровождаться файлом .resS, который содержит текстуру или данные сетки. Например, level0 может сопровождаться level0.resS и sharedassets0 может сопровождаться sharedassets0.assets.resS.`
Аналогичным образом, любой серийнизированный файл, содержащий объекты AudioClip или VideoClip, будет сопровождаться файлом .resource, содержащим двоичные данные для этих объектов. Например, level0.resource или sharedassets1.resource.
Unity хранит двоичные данные в отдельных файлах, чтобы уменьшить использование памяти при загрузке ассетов во время выполнения и помочь в эффективной передаче GPU для определенных типов данных.
Совместное группирование ассетов
Порядок сцен в списке Scene Перечень в вашем проекте определяет, каким образом Unity собирает вместе общие ресурсы следующим образом:
- Unity обрабатывает сцены в точном порядке, указанном в File > Build Profiles > Scene List.
- Unity сохраняет каждый объект в файле сцены в соответствующем файле
level, если только это не объект, который удален (например, компонент только для редактора). - Для каждой ссылки от объекта сцены к объекту в ассете, Unity использует граф прямой ссылки, чтобы вытащить все необходимые объекты в сборку. Если обнаруженный объект не назначен файлу
sharedasset, то он назначается файлуsharedasset, соответствующему сцене, которая в настоящее время обрабатывается. Например,level2заполняетsharedassets2, но он также может ссылаться на объекты вsharedassets0,sharedassets1,globalgamemanagers.assets,resources.assetsиunity_default_resources.
Этот алгоритм обеспечивает, что объекты создаются только один раз, а не дублируют ассеты в нескольких сценах. Он приоритизирует эффективность первых сцен в списке сцен в ущерб более поздним сценам. Например, level0 имеет наименьшее количество ссылок на другие файлы и может ссылаться только на sharedassets0, globalgamemanagers.assetsи unity_default_resources. В отличие от этого, level99 может ссылаться на объекты, распределенные по 100 sharedasset файлам, globalgamemanagers.assets, resources.assetsи unity_default_resource.
Алгоритм дает особое предпочтение первой сцене, потому что это первая, которая загружается при запуске приложения.
Настройки сжатия данных игрока
Вы можете по желанию сжать данные Player в LZ4 ArchiveFile, указав BuildOptions.CompressWithLz4. Это тот же формат файла, который Unity использует для архивирования AssetBundles.
Сжатый файл для сборок Player всегда называется data.unity3d и содержит глобальные файлы с серийными номерами менеджеров игр (globalgamemanagers), сцен (level и sharedassets файлы), ресурсов (resources.assets) и шейдеров (Resources/unity_builtin_extra).
Он не содержит Resources/unity default resources, потому что сборка контента не генерирует этот файл.
Он также не содержит никаких файлов .resource, которые содержат видео- и аудиоконтент, оставленный за пределами файла data.unity3d.
AssetBundle вывод контента
Если вы используете AssetBundles для построения содержимого, то способ назначения объектов файлам Unity и правила именования файлов отличаются. Для получения дополнительной информации см. Результат сборки AssetBundle.