我已经搜索过类似的这样的帖子但是找不到。 我想知道是否有更有效的渲染图块的方法,它只使用1个图像并在网格中绘制相同的图像以覆盖区域。
我使用以下代码:
public void render(Graphics g) {
for(int r = 0; r <= tilePieces.length; r++) {
for(int c = 0; c <= tilePieces[0].length; c++) {
try {
tilePieces[r][c].render(g);
}
catch(Exception e) {
}
}
}
}
当我创建一个图块时,我还会创建它需要的多个图块(正方形)并将它们存储在一个数组中。 每次调用对象的render()方法时,它都会循环遍历数组并调用其绘制图像的render()方法。 游戏中没有任何延迟,但我发现这样做效率低,因为我必须为一个磁贴创建一堆对象并调用它们的渲染方法。 这就是为什么,我尝试在上面的方法中绘制相同的一个图像,而不是调用每个tile片段的render()方法,这导致游戏每5秒运行1帧。这很奇怪,调用绘制图像的方法和直接在循环中绘制图像有什么区别?