Я сделал и Android 2d игру в Unity 5 примерно с 15 сценами и применил скрипт смены сцены к кнопкам, я наблюдаю неравномерную задержку смены сцены нажатием кнопки onclick, некоторые сцены загружаются быстро, а другие загружаются после небольшой задержки около 1-2 секунд и иногда по 2 ~ 3 секунды, подскажите, что можно сделать.
неравномерная задержка смены сцены в единстве
Ответы (1)
Точный, но, вероятно, нежелательный ответ:
Вы ничего не можете с этим поделать
Когда вы загружаете новую, сцены Unity должны быть десериализованы с диска (они не хранятся в памяти!). Чем больше сцена (чем больше игровых объектов, моноповедений и т. Д.), Тем больше времени займет этот процесс. Кроме того, каждому скрипту MonoBehaviour необходимо отправить вызов Awake()
и Start()
, который имеет значительные накладные расходы.
Вы можете уменьшить накладные расходы, используя меньше скриптов с методами Awake и Start (вызывая ту же логику под другой сигнатурой метода из одного основного скрипта), а также меньшее количество скриптов в целом (дальнейшая централизация вашей программы), а также компилируя игру. под Fast But No Exceptions
и .NET Subset
(однако ни один из них не доступен для работы редактора), оба упомянуты в предыдущей связанной статье.
Также возможно, что Unity компилирует сцены в формате ресурсов (который неуклюжий и медленный), и вы вместо этого может быть полезно использовать Asset Bundles.
Однако вы по-прежнему будете ограничены временем загрузки между различными сценами, независимо от ваших усилий по оптимизации (какие есть несколько вариантов). Переход к сложной сцене всегда занимает больше времени, чем к меньшей, этого не обойтись.