LibGDX 后渲染到下一个屏幕失败
Rendering to next Screen failed in LibGDX
我有一个大学项目是用 LibGDX 制作关于 smasher 游戏的游戏,我做到了当玩家生命为 0 时,它从 GameScreen [=] 切换到 EndGameScreen class 20=],但这种情况发生了
failed render,其实我也不确定是setScreen方法的问题还是我的EndGameScreen class不对
GameScreen Class
//setScreen in GameScreen
if (life == 0) { //this is inside the render function
game.setScreen(game.endGame);
dispose();
}
@Override
public void dispose() {
bg.dispose();
fontScore.dispose();
lifes.get(0).dispose();
lifes.get(1).dispose();
lifes.get(2).dispose();
bactery0Arr.clear();
bactery1Arr.clear();
bactery2Arr.clear();
}
EndGameScreen Class
//EndGameScreen class
public class EndGameScreen implements Screen {
final BacterySmasher game;
OrthographicCamera camera;
public EndGameScreen(final BacterySmasher game) {
this.game = game;
//Set camera
camera = new OrthographicCamera();
camera.setToOrtho(false, 1280, 720);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.batch.draw(new Texture(Gdx.files.internal("bg.png")), 0,0,0,0);
game.batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
你是在GameScreen
的渲染方法中调用dispose()
吗?而是在屏幕隐藏时调用。
@Override
public void hide() {
dispose();
}
我有一个大学项目是用 LibGDX 制作关于 smasher 游戏的游戏,我做到了当玩家生命为 0 时,它从 GameScreen [=] 切换到 EndGameScreen class 20=],但这种情况发生了 failed render,其实我也不确定是setScreen方法的问题还是我的EndGameScreen class不对
GameScreen Class
//setScreen in GameScreen
if (life == 0) { //this is inside the render function
game.setScreen(game.endGame);
dispose();
}
@Override
public void dispose() {
bg.dispose();
fontScore.dispose();
lifes.get(0).dispose();
lifes.get(1).dispose();
lifes.get(2).dispose();
bactery0Arr.clear();
bactery1Arr.clear();
bactery2Arr.clear();
}
EndGameScreen Class
//EndGameScreen class
public class EndGameScreen implements Screen {
final BacterySmasher game;
OrthographicCamera camera;
public EndGameScreen(final BacterySmasher game) {
this.game = game;
//Set camera
camera = new OrthographicCamera();
camera.setToOrtho(false, 1280, 720);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.batch.draw(new Texture(Gdx.files.internal("bg.png")), 0,0,0,0);
game.batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
你是在GameScreen
的渲染方法中调用dispose()
吗?而是在屏幕隐藏时调用。
@Override
public void hide() {
dispose();
}