Страница 1 из 2

AssetBundles в Unity5.

СообщениеДобавлено: 05 дек 2016, 22:53
Kondrator
Есть много объектов, добавленных в AssetBundles. Лежат построенные AssetBundles на сервере и качаются при старте приложения.
1) В таком случае нет смысла добавлять объекты AssetBundles в компиляюцию игры?
1.1) То есть, просто закинуть их в папку Editor?
2) Нормальная ли ситуация, что я кидаю почти всю игру в AssetBundles, а потом просто закачиваю при старте приложения?
3) Все AssetBundles, которые я загружаю с сервера, они сохраняются в папке кеша нужного приложения?
4) Возможен ли такой вариант, когда я загружаю AssetBundles тем самым заменяю ими префабы в самом приложении?
5) Все таки адвекатней будет способ 3 нежели 4 ?
P.S. разумеется загружаю либо с сервера либо с кеша.
Спасибо за помощь!

Re: AssetBundles в Unity5.

СообщениеДобавлено: 06 дек 2016, 13:11
DbIMok
1) нет
1.1) зависит от того что нужно. можно хранить в любой папочке, например, Bundles
2) зависит от игры/платформы/способа монетизации и т.п.
3) если грузите через кэш. можете организовать свой кэш по своим правилам
4) не "заменяю префаб" а использую вместо. конечно можно
5) ну, наверное 3

Re: AssetBundles в Unity5.

СообщениеДобавлено: 07 дек 2016, 23:11
Kondrator
Спасибо за ответ!

Есть еще вопрос...
Есть префаб, добавленный в AssetBundle. На префаб добавлен скрипт. Если я изменю часть скрипта, то:
1) При загрузке этого префаба все будет как нужно, то есть скрипт будет на нем измененный?

Предположим у меня несколько префабов(AssetBundles) с таким скриптом:
2) При использовании загрузки ассета из кеша/интернета (и при изменении такого сприпта) будет загружен ЗАНОГО каждый такой префаб с таким скриптом?
2.1) После первого загруженного префаба с таким скриптом (измененным), другие (с этим же скриптом) не будут загружаться, если они уже находятся в кеше (разумеется в них был изменен только "этот" скрипт)?

Re: AssetBundles в Unity5.

СообщениеДобавлено: 08 дек 2016, 01:36
DbIMok
скрипты хранятся отдельно - в dll. так что скрипт будет измененный. что будет со значениями полей при их несовпадении с новым скриптом не знаю. проведите эксперимент. я предпочитаю хранить в бандлях только меши-текстуры.
кэш для вас ничего магически не сделает/не решит. с ним вообще все не просто (или наоборот, слишком просто, как посмотреть) viewtopic.php?f=5&t=40966

Re: AssetBundles в Unity5.

СообщениеДобавлено: 08 дек 2016, 08:44
Woolf
что будет со значениями полей при их несовпадении с новым скриптом не знаю

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

Кстати, все будет нормально работать, если скрипты даже из разных проектов (ну, в одном создаются бандли со скриптами, в другом читаются). Главное, чтобы имена скриптов и значений совпадали, а что там за внутренняя логика у них - бандлю не интересно. У меня так устроено - в редакторе локаций на скриптах стоит одна логика (с отображением отладочной инфы), а на проекте совсем другая, и всё стреляет

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 13:35
immeasurability
мне все как то не доводилось организовать эту систему бандлев, но сколько я сними не сталкивался, всегда был ответ, что нельзя в собранный проект допихнуть скрипты дополнительные
объясните если не затруднит, как так получается что можно бандлами скрипты новые подгружать Оо
это же получается что таким способом моды можно делать или я не прав?

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 14:30
DbIMok
скрипты в dll. в бандлях ассеты и значения полей тех скриптов, что на них висели.

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 15:01
immeasurability
DbIMok писал(а):скрипты в dll. в бандлях ассеты и значения полей тех скриптов, что на них висели.


получается что нового функционал добавить нельзя? правильно я понял?

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 15:08
DbIMok
почему же? добавить dll, бандлей, вот и новый функционал

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 17:50
Kondrator
Всем спасибо за ответы!

Подскажите еще вопросик c:
Вопрос касательно кеша от AssetBundles.

Есть ассет на сервере, я его качаю через метод LoadCacheOrDownload и соответственно он загружается в кеш. При следующей загрузки он берет его из кеша.
Далее я изменяю ассет бандл. Снова его качаю из приложения (разумеется он проверяет, что объект изменен и произойдет загрука):
1) Старый хеш ассета будет удалён / останется без изменений / заменится?
2) Является ли кеш "ценным", то есть не может ли он быть удален ОС по какой либо его причине надобности / ненадобности? (именно ОС, а не пользователем)

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 дек 2016, 18:09
DbIMok
https://docs.unity3d.com/ScriptReference/Caching.html
1) скорее всего будет удален, т.к. зачем он старый?
2) система (какая из овер 20?) ничего про кэш не знает

Re: AssetBundles в Unity5.

СообщениеДобавлено: 12 дек 2016, 22:54
Kondrator
Еще раз спасибо за ответы!!!

Есть еще вопрос)

Есть сцена, добавленная в AssetBundle. На сцене есть три (например) объекта, тоже добавленных в AssetBundle.
Если я сначала скачаю ассеты объектов на сцене, а после начну скачивать ассет сцены:
Будут ли повторно закачаны ассеты объектов на сцене?

Re: AssetBundles в Unity5.

СообщениеДобавлено: 13 дек 2016, 08:06
DbIMok
Конечно будут. Любой каприз за ваши деньги. Как сделаете, так и будет работать

Re: AssetBundles в Unity5.

СообщениеДобавлено: 08 янв 2017, 22:04
Kondrator
Здравствуйте еще раз!
Если мне необходимо использовать проект для Standalone, Andoid, iPhone, то мне нужно строить бандлы для?:

StandaloneWindows
StandaloneWindows64

StandaloneLinux
StandaloneLinux64
StandaloneLinuxUniversal

StandaloneOSXIntel
StandaloneOSXIntel64
StandaloneOSXUniversal

Android
iOS

Быть может что-то является лишним и его можно исключить?

Здесь платформы построений бандлов: https://docs.unity3d.com/ScriptReferenc ... arget.html (тут есть 64 и универсал)
Здесь #define: https://docs.unity3d.com/Manual/Platfor ... ation.html (нет ни 64, ни универсал)
Здесь RuntimePlatform: https://docs.unity3d.com/ScriptReferenc ... tform.html (нет ни 64, ни универсал)

Re: AssetBundles в Unity5.

СообщениеДобавлено: 09 янв 2017, 00:21
beatlecore
Kondrator писал(а):StandaloneWindows
StandaloneWindows64

StandaloneLinux
StandaloneLinux64
StandaloneLinuxUniversal

StandaloneOSXIntel
StandaloneOSXIntel64
StandaloneOSXUniversal


можно для всех этих платформ одни и те же бандлы юзать