【问题标题】:Game Programming Performance游戏编程性能
【发布时间】:2014-02-15 10:34:49
【问题描述】:

我已经缩小了对这种方法的减速

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 秒!任何帮助将不胜感激位图大约是屏幕大小的两倍,但这是我的游戏的关键,所以我需要保留这个:) 对优化有什么帮助吗?谢谢

【问题讨论】:

    标签: java android iphone performance


    【解决方案1】:

    您总是在这里等待固定的时间,与整个计算和 ui 更新需要多长时间无关

     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 秒!这取决于您所说的还是我的代码?因为这是一款自上而下的赛车游戏,所以我看不出它的运行速度有多慢 :(
    • 好的,现在我正在测量我已将范围缩小到绘制背景!请参阅编辑
    猜你喜欢
    • 2011-11-05
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2012-04-25
    • 1970-01-01
    • 2023-03-14
    • 2013-08-28
    相关资源
    最近更新 更多