Я создаю простенькую breakout игру на Android и iOS. При тестировании на смартфоне иногда заметны подлагивания, поэтому встал вопрос оптимизации. Но так как это моя первая игра, то я не знаю как оптимизировать. Почитал в интернете - полез в профайлер Юнити, включив Deep Profile. В итоге выяснилось, что всегда на первом месте по времени стоит WaitForTargetFPS (~95%), иногда вскакивает BehavioutUpdate (~10%). Насколько я понял BehaviourUpdate это скрипты? Потому что если развернуть, то там будут названия функций.
Так вот, на первом месте в BU всегда стоит Brick.Update(). Сама по себе функция легкая:
Синтаксис:
Используется csharp
void Update () {
if (!GameManager.Instance.isEnd) {
brickTransform.position += new Vector3 (0, -0.1f, 0);
if (brickTransform.position.y <= GameManager.Instance.lastY)
GameManager.Instance.isEnd=true;
}
}
if (!GameManager.Instance.isEnd) {
brickTransform.position += new Vector3 (0, -0.1f, 0);
if (brickTransform.position.y <= GameManager.Instance.lastY)
GameManager.Instance.isEnd=true;
}
}
Но из-за того, что в игре на одной сцене порядка 42-50 таких кирпичей, то смена позиции отбирает целых 4% времени. Также каждые N секунд я Instatiate 7 новых кирпичей, что тоже не вери гуд. Как мне все это оптимизировать? А то я вообще не понимаю, что тут можно изменить.
UPD. Я сделал 1 parent объект, к которому привязывал новые кирпичи. И двигал непосредственно его. На количество DC это никак не повлияло.