Лаг при Instantiate

120
21 октября 2021, 07:20

Когда делаю так:

Instantiate(Effects, transform.position, Effects.transform.rotation).GetComponent<ParticleSystem>().Play();

Происходит лаг - задержка не на долго, после чего появляется эффект.

После повторных действий, задержки уже нет, как только останавливаю сцену и запускаю снова, опять также история возникает.

С чем это может быть связано?
Уж больно напрягает этот глюк.
Эффект создается из префаба.

Когда я убираю этот код лагов нет...

Answer 1

Это не "Глюк". Эта работа с памятью. Мобилки особенно чувствительны из-за чего и происходят статеры. И не только при выделении памяти на новый объект, но и на выгрузки тоже. У unity и без того паршивый garbage collector с постоянными пунктуации нагрузки памяти. По возможности нужно оптимизировать так, что-бы одни и те-же объекты эффектов, пуль и т.д. использовались многократно и были предзагруженные.

Answer 2

Попробуй создать партикл систем при создании сцены( start() ) и присвоить его в переменную в самом скрипте.

А в нужном месте уже запускать play() даной системы частиц.

READ ALSO
DateTime to int (по мск)

DateTime to int (по мск)

DateTimeNow выводит текущее московское время, но почему при переводе DateTime

195
Memory Mapped File в C# (Linux)

Memory Mapped File в C# (Linux)

Подскажите, пожалуйста, какой-нибудь простой пример использования Memory Mapped File на C#(Как вариант, обмен состояниями потока между родительской...

178
Загрузка AssetBundle с хостинга в Unity

Загрузка AssetBundle с хостинга в Unity

Необходимо загрузить AssetBundle с хостингаНаписал такой код для загрузки с сервера:

91