Проблема производительности двигателя
Я делаю гоночную игру, похожую на старую школу "Pole position" (вроде).
Я создаю свою дорогу из 50 прямоугольников (RoadFragment представляет собой прямоугольник с двумя дополнительными белыми маленькими прямоугольниками, прикрепленными для имитации обочин дороги):
int y = 0;
int widthCut = 8; // 4 przy 100 prostokatach, 8 przy 50
for(int rectIndex = 0; rectIndex < rectangleCount; rectIndex++)
{
RoadFragment roadFragment = new RoadFragment(400, 0, 500, 300 / rectangleCount, RaceScene.vbom);
roadFragments.add(rectIndex, roadFragment);
this.attachChild(roadFragments.get(rectIndex));
roadFragments.get(rectIndex).setY(rectIndex * 6);
roadFragments.get(rectIndex).setWidth(500 - y);
y = y + widthCut;
}
в onManagedUpdate
сцены я перемещаю эти фрагменты:
timeToUpdate = timeToUpdate + pSecondsElapsed;
if(timeToUpdate > 0.00f){
timeToUpdate = 0;
for(int rectangleIndex = 0; rectangleIndex < rectangleCount; rectangleIndex++) {
roadFragments.get(rectangleIndex).setX(getBezierX((float)rectangleIndex, (float)rectangleCount, 400, 400, 400 + curveOffset));
}
}
Как вы можете видеть в каждом обновлении, для каждого из этих фрагментов делается вычисление, чтобы переместить их на коэффициент, рассчитанный по кривой Безье. На сцене также есть несколько других спрайтов: фон параллакса, машина игрока, некоторые другие машины (но не более двух одновременно) и несколько других. Всего у меня нарисовано 150 прямоугольников и около 10 спрайтов.
Так, на Galaxy S5 он выглядит действительно красиво и плавно, но на более старых телефонах, таких как Galaxy S3 mini, он заикается и не воспроизводится. Вопрос: есть ли какая-нибудь хитрость, изменение или идея, которую я мог бы использовать, чтобы сделать это более плавным?
1 ответ
Может быть проблема в той части кода, где вы визуализируете эти прямоугольники? Вам нужно пакетировать спрайты.
http://www.andengine.org/forums/updates/spritebatch-2x-performance-improvement-anyone-t3613.html