游戏编程性能

3
我已经缩小了我的减速到这个方法。
public void drawMap(Canvas canvas) {

    if (car.x > 0 && map != null) {
        clipArea = Bitmap.createBitmap(map, mapx, mapy, getWidth(),
                getHeight());
        canvas.drawBitmap(clipArea, 0, 0, null);
    }
}

这个程序运行大约需要3秒钟!希望能得到帮助。位图的大小是屏幕大小的两倍,但对于我的游戏来说很关键,所以我需要保留它 :) 请问有什么优化的方法吗?谢谢

1个回答

0
你在这里总是等待固定的时间,不管整个计算和界面更新需要多长时间。
 frame.postDelayed(frameUpdate, FRAME_RATE);

你想做的是:在新的“游戏刻度”之前,创建一个时间戳变量,然后进行计算,最后检查下一个刻度应该剩余多少时间。

可以这样做:

synchronized public void run() {


    Date timestamp = new Date();

    // do your calculations
    ...

    // calculate how much time it took and when the next update should be:
    int timeToNextTick = FRAME_RATE - (new Date().getTime() - timestamp.getTime());
    frame.postDelayed(frameUpdate, timeToNextTick);

}

这样,更新的时钟应该始终保持相等的时间(假设设备能够在帧速率值内运行代码)


嗨,我发现这很有趣,所以决定看看我实际得到了多少FPS,而要获得50FPS大约需要6秒钟!这是因为你说的原因还是我的代码问题?由于这是一款自上而下的赛车游戏,我不明白它为什么运行得那么慢:( - user3313094
好的,现在我正在测量,我已经缩小到绘制背景了!请查看编辑。 - user3313094

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接