неравномерная задержка смены сцены в единстве

Я сделал и Android 2d игру в Unity 5 примерно с 15 сценами и применил скрипт смены сцены к кнопкам, я наблюдаю неравномерную задержку смены сцены нажатием кнопки onclick, некоторые сцены загружаются быстро, а другие загружаются после небольшой задержки около 1-2 секунд и иногда по 2 ~ 3 секунды, подскажите, что можно сделать.


person Muhammad Ameen    schedule 12.01.2017    source источник
comment
что ты на самом деле хочешь ?? Хотите убрать задержку ??   -  person waqas ali    schedule 12.01.2017
comment
да, я хочу, чтобы все сцены загружались одновременно   -  person Muhammad Ameen    schedule 12.01.2017
comment
значит нельзя в личной редакции?   -  person Muhammad Ameen    schedule 12.01.2017
comment
да, но вы можете добавить экран загрузки, чтобы показать пользователю.   -  person waqas ali    schedule 12.01.2017
comment
время загрузки зависит от того, что содержат эти сцены и какие скрипты запускаются при их загрузке. Экран загрузки - самый безопасный вариант. Или просто отключите все кнопки и отобразите сообщение о загрузке, если пользователь должен видеть тот же пользовательский интерфейс после загрузки сцены.   -  person Mircea Dogaru    schedule 12.01.2017
comment
сделал это, удалив некоторые игровые объекты, но почему время загрузки зависит от игровых объектов?   -  person Muhammad Ameen    schedule 12.01.2017
comment
Сложность сцены будет иметь большое влияние на то, сколько времени потребуется для загрузки - движок должен создать экземпляры всех этих объектов, и, помимо выделения памяти, компоненты, прикрепленные к вашим объектам, могут действительно замедлить работу (если вы много обрабатываете в своем _1 _ / _ 2 _... ну, повторение этого большего количества раз, естественно, вызовет большую задержку).   -  person Serlite    schedule 12.01.2017


Ответы (1)


Точный, но, вероятно, нежелательный ответ:

Вы ничего не можете с этим поделать

Когда вы загружаете новую, сцены Unity должны быть десериализованы с диска (они не хранятся в памяти!). Чем больше сцена (чем больше игровых объектов, моноповедений и т. Д.), Тем больше времени займет этот процесс. Кроме того, каждому скрипту MonoBehaviour необходимо отправить вызов Awake() и Start(), который имеет значительные накладные расходы.

Вы можете уменьшить накладные расходы, используя меньше скриптов с методами Awake и Start (вызывая ту же логику под другой сигнатурой метода из одного основного скрипта), а также меньшее количество скриптов в целом (дальнейшая централизация вашей программы), а также компилируя игру. под Fast But No Exceptions и .NET Subset (однако ни один из них не доступен для работы редактора), оба упомянуты в предыдущей связанной статье.

Также возможно, что Unity компилирует сцены в формате ресурсов (который неуклюжий и медленный), и вы вместо этого может быть полезно использовать Asset Bundles.

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

person Draco18s no longer trusts SE    schedule 28.04.2017