我做了一個小型的「遊戲」來測試我在實際遊戲中注意到的一些口吃,而且我不能爲我的生活弄清楚爲什麼會發生這種情況。我做了最簡單的項目,我可以測試這一點,但我仍然沉重的口吃。 FPS仍然是60,但是每隔幾秒鐘,有時甚至更多,遊戲就會結束。在最簡單的項目中口吃
我已經在移動設備和高端PC上嘗試過了,奇怪的是,它在PC上更加引人注目,儘管它仍然出現在手機上。
我不能上傳它的視頻,因爲它已經不在錄像中了,所以如果你想測試它,你可以自己編譯這個項目。這裏是代碼:
public class LagTest extends ApplicationAdapter {
SpriteBatch batch;
Texture dot;
float x;
float y;
float speed;
float dotWidth;
int screenWidth;
@Override
public void create() {
batch = new SpriteBatch();
dot = new Texture("dot.png");
x = 100;
y = Gdx.graphics.getHeight()/2 - dot.getHeight()/2;
speed = 500;
dotWidth = dot.getWidth();
screenWidth = Gdx.graphics.getWidth();
}
@Override
public void render() {
Gdx.gl.glClearColor(0.2f, 0.4f, 0.8f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(dot, x, y);
batch.end();
if (x < 0) {
speed = 500;
}
if (x > screenWidth - dotWidth) {
speed = -500;
}
x += speed * Gdx.graphics.getDeltaTime();
}
}
如果任何人有什麼可能導致這種情況的線索,我都耳朵。
編輯:
所以這裏有好玩的東西。這似乎只發生在窗口模式中,而不是全屏模式。這也可能是它在移動設備上效果更好的原因。也許這是一個錯誤呢?
不確定是否這是造成它,但因爲你沒有使用'batch()'調用後,你應該立即結束它,通常是最好的先更新然後畫(你正在做相反的事) –
啊,當然。這不是造成它的原因,但我仍然會編輯代碼。 – tobloef
您可以打開GC日誌並檢查它是否是GC。 – noone