为什么我的游戏中的算法和类如此减慢帧速率呢?

时间:2014-11-08 21:29:17

标签: java algorithm 2d-games frame-rate

我为我正在研究的游戏引擎编写了一个事件系统,它将事件添加到地图中的图块中,当玩家与其交叉时,它会执行某些操作。无论那是什么东西。在此测试用例中,它会加载新映射。

问题在于,开始游戏时的帧速率大约为30,直到我通过走过它开始事件,这会启动事件并使fps达到大约60.

编辑:似乎这个问题只在我添加事件后弹出。但是,我添加了另一个类似的变形事件,看看fps是否下降得更多,它没有。在我完成第一个事件后,fps恢复正常,我仍然使用第二个事件。

这是事件类:

public class Event {

//Warping variables
private int newX, newY;
private Map _map, _mapOverlay;
private String eventType;
private String _name;

public Event(String name, String type) {
    _name = name;
    eventType = type;
}

public void setWarp(Map map, Map overlay, int x, int y) {
    _map = map;
    _mapOverlay = overlay;
    newX = x;
    newY = y;
}

public Map getMap() { return _map; }
public Map getOverlay() { return _mapOverlay; }
public int getNewX() { return newX; }
public int getNewY() { return newY; }
public String getEventType() { return eventType; }
public String getname() { return _name; }
}

这是与warp事件发生冲突时调用的算法:

if(spr.spriteType() == "player" && tile.hasEvent()) {
        if(tile.event().getEventType() == "warp") {
            tiles().clear();
            currentMap = tile.event().getMap();
            currentOverlay = tile.event().getOverlay();
            for(int i = 0; i < currentMap.getWidth() * currentMap.getHeight(); i++){
                tiles().add(currentMap.accessTile(i));
                tiles().add(currentOverlay.accessTile(i));
            }
            playerX = tile.event().getNewX();
            playerY = tile.event().getNewY();
            tile.endEvent();
        }   
    }

这是tile类内部的部分,其中包含与添加事件有关的方法。

public void addEvent(Event event) {
    this.event = event;
    hasEvent = true;
}

public Event event() { return event; }
public boolean hasEvent() { return hasEvent; }
public void endEvent() {
    event = null; 
    hasEvent = false;
}

最后,以下是用于将事件添加到地图中现有图块的三行:

warp1 = new Event("testWarp", "warp");
warp1.setWarp(city, cityOverlay, -200, 0);

city.accessTile(204).addEvent(warp1);

0 个答案:

没有答案