【发布时间】:2013-11-10 10:35:26
【问题描述】:
您好,我的名字是 Ryan,我目前正在开发自己的 2D java 游戏。目前,游戏世界中有很多对象。在游戏重新开始时,世界加载了 100 根随机放置在其上的树,这些树是使用数组列表和树类制作的。我的游戏使用一个名为checkcollisions 的类来检查玩家是否与任何树木相交。然后将此方法放入update 方法中。当不调用此方法时,我会获得额外的 100 FPS,我仍然可以获得这 100 fps 但仍检查碰撞吗?我真的需要提高 FPS,因为我的游戏目前以 30-50 fps 运行
这里是检查碰撞代码:
public void checkCollisions() {
for (int i = 0; i < Placing_Objects.Small_Trees.size(); i++) {
if (player.getBounds().intersects(Placing_Objects.getSmall_Tree().get(i).getBounds())) {
if (gotAxeOn) {Placing_Objects.Small_Trees.get(i).health -= rand.nextInt(3);}
}
if (Placing_Objects.Small_Trees.get(i).health <= 0) {
Placing_Objects.removeSmall_Tree(Placing_Objects.Small_Trees.get(i));
Inventory.addItemToInv("Wood");
Inventory.addItemToInv("Wood");
Inventory.addItemToInv("Stick");
Player.exp += rand.nextInt(3);
challenges.choppedDownTrees += 1;
}
}
}
【问题讨论】:
-
速度变慢可能是由 checkCollisions 函数中进行的任意数量的函数调用引起的。玩家调用的interests() 函数可能是罪魁祸首。
-
在分析器中运行您的游戏。
-
@user2876115 分析器会告诉您每种方法使用了多少时间;让你找到瓶颈。大多数 IDE(例如 netbeans)都带有分析器
标签: java performance frame-rate