У меня есть несколько областей в моем игровом проекте, которые разделены на несколько сцен, например, скажем, есть первая область под названием «Подвал», которая разделена на сцены Подвал_1, Подвал_2 и Подвал_3; и еще одна область, «Чердак», разделена на чердак_1 и чердак_2.
Некоторые активы (атлас текстур и звуки) являются общими для всех сцен области, поэтому я подумал, что могу сделать AssetBundle со всеми общими активами для «Подвала» и еще один AssetBundle с общими активами для области «Чердак». . Затем, когда мой игрок собирается войти в область «Подвал», я загружаю AssetBundle «Подвал», чтобы при вызове Application.LoadLevel («Подвал_1»), Application.LoadLevel («Подвал_2») или Application.LoadLevel («Подвал_3»), общие ресурсы (которые были загружены в пакете) не перезагружаются без необходимости, будут загружены только ресурсы, относящиеся к сцене. Затем, если я дойду до точки, когда игра узнает, что активы Basement больше не нужны, или, по крайней мере, ненадолго, тогда я выгружу пакет, чтобы освободить память, и загружу любой другой пакет, который может быть уместным. (Чердак, например).
У меня вопрос: так ли это работает? Например, скажем, я собираюсь войти в «Подвал», поэтому, если я загружу свой «Подвал» AssetBundle с диска и, в основном, просто вызову LoadAllAssets() на нем, Application.LoadLevel("Basement_1") "автоматически" будет искать активы в пакете, который я загрузил? или Application.LoadLevel просто перезагрузит необходимые ресурсы заново?
Насколько я понимаю, Application.LoadLevel не будет автоматически искать в AssetBundle. Если да, то есть ли способ заставить его выглядеть в загруженном AssetBundle(s)? Есть ли другой способ, который я не вижу?
Идея состоит в том, чтобы попытаться сократить время загрузки, потому что, например, вход и выход из двери может вызвать вызов Application.LoadLevel("Подвал_X") и Application.LoadLevel("Подвал_Y") туда и обратно.
Заранее спасибо за любую информацию ;)
Ваше здоровье!