Unity - необходимо ли исключать ресурсы, используемые в AssetBundles, из сборки игры?

Трудно найти много информации о том, как на самом деле работают AssetBundles. Не могу найти никаких объяснений, как управлять пакетами ресурсов при сборке игры.

В основном у меня есть папка с именем AssetBundles в моем окне проекта. Все активы, которые я помещаю в эту папку, создаются как AssetBundles в папке в моем каталоге сборки (например, GameName / Data / AssetBundles), которые затем загружаются при необходимости.

Но когда я создаю саму игру, знает ли он, что нельзя включать эти активы, которые используются в AssetBundles, в сборку игры? Или мне нужно как-то их исключить?

Изменить: я добился некоторого прогресса.

Насколько я понимаю, только активы, которые находятся в сценах, которые находятся в настройках сборки, будут построены вместе со сборкой игры. Сценарии всегда создаются в сборке игры (я не уверен, есть ли способ обойти это, но для меня это не проблема).

Итак, у меня есть единственная сцена в сборке игры, которая действует как запускаемый объект игры. В этой сцене есть сценарий Asset Manager с DontDestroyOnLoad, указанным в Awake.

Мой скрипт менеджера активов в основном просто обрабатывает загрузку / выгрузку пакетов, активов и экземпляров.

В настоящее время я не слишком уверен в том, как работает сборка пакетов ресурсов для сцен. У меня он работает с LoadAllAssets, а затем с LoadLevel, но что, если несколько сцен используют одни ресурсы? Раздуваются ли сборки сцены с копиями ресурсов, которыми можно делиться? Я читал, что зависимости автоматически обрабатываются в Unity 5, но я не уверен, относится ли это к этому.


person Sakuya    schedule 18.09.2015    source источник


Ответы (2)


Я нашел сообщение ниже, в котором есть образец проекта с различными способами использования AssetBundles в Unity 5.

http://forum.unity3d.com/threads/new-assetbundle-build-system-in-unity-5-0.293975/

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

Единственное, что я делал по-другому при сборке, - это определение AssetBundleBuild (в основном я организовал свою папку проекта так, чтобы активы хранились в подпапках, которые коррелируют с именами их наборов ресурсов, а затем при сборке он проверяет эти папки и добавляет их).

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

У меня до сих пор нет ответа на свой первоначальный вопрос Is it necessary to exclude assets being used in AssetBundles from game build?

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

person Sakuya    schedule 20.09.2015

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

person Justin Markwell    schedule 19.09.2015
comment
Но разве это не включает объекты в сценах и сами сцены? Даже если я создам их как комплекты ресурсов? - person Sakuya; 19.09.2015
comment
Я предполагаю, что вы имеете в виду, что все, что используется в сценах, будет построено в сборке игры, если эти сцены находятся в настройках сборки, поэтому активы, которые создаются как пакеты ресурсов, не могут присутствовать в этих сценах во время сборки игры? Поэтому, если я хочу внести изменения в элементы инспектора в сцене, мне придется: удалить ресурсы со сцены и поместить их в папки пакетов; ›создать пакеты, которые необходимо обновить;› создать игру; ›повторно добавить ресурсы в сцену. Думаю, мне нужно будет написать для него сценарий? - person Sakuya; 19.09.2015
comment
Нет, он не должен ничего дублировать, он определит, что используется. - person Justin Markwell; 19.09.2015
comment
Я провел тест, имея сцену, которая загружается из набора ресурсов, и сцена содержит префаб куба из другого набора ресурсов. Я создаю оба набора активов. - person Sakuya; 20.09.2015
comment
Извините, я случайно опубликовал это перед завершением и не могу редактировать: я провел тест, имея сцену, загруженную из набора ресурсов, и сцена содержит префаб куба из другого набора ресурсов. В сборке №1 набора ресурсов сцены с кубом размер составляет 70 КБ. В сборке №2 этой сцены я удалил куб перед сборкой, и его размер упал примерно до 40 КБ. Размер самого пакета ресурсов куба составляет 32 КБ. Это наводит меня на мысль, что набор ресурсов сцены хранит куб в собственном наборе, а не ссылается на него. Не могли бы вы опубликовать рабочий пример, чтобы я знал, что делаю неправильно? - person Sakuya; 20.09.2015
comment
Кроме того, когда я проверяю файлы манифеста, куб не отображается как зависимость. - person Sakuya; 20.09.2015