1

我正在制作一款看起来像老式“杆位”(有点)的赛车游戏。

我从 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 这样的旧手机上它会卡顿并且无法播放。问题是:有什么技巧、改变或想法可以用来让它更顺畅吗?

4

1 回答 1

0

可能是您渲染这些矩形的代码部分的问题?您需要批处理精灵。

http://www.andengine.org/forums/updates/spritebatch-2x-performance-improvement-anyone-t3613.html

于 2015-07-13T05:36:40.830 回答