我有一个渲染方法,我无法弄清楚它为什么没有发生。这是我到目前为止的代码:
public class DevMaze extends Game {
SpriteBatch batch;
BitmapFont font;
public void create() {
...
this.setScreen(new MainMenuScreen(this));
...
}
public void render() {
super.render();
}
...
}
MainMenuScreen得到设置并渲染得很好,这是代码:
public class MainMenuScreen implements Screen {
final DevMaze game;
OrthographicCamera camera;
public MainMenuScreen(final DevMaze g) {
this.game = g;
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
}
public void render(float delta) {
...
if (Gdx.input.isTouched()) {
game.setScreen(new GameScreen(game)); // This line runs
dispose();
}
}
但是当我将屏幕设置为我的GameScreen时,构造函数运行得很好,但渲染方法永远不会触发:
public class GameScreen implements Screen {
final DevMaze game;
OrthographicCamera camera;
...
public GameScreen(final DevMaze g) {
this.game = g;
// Create Camera
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
// Load assets
...
System.out.println("ONE MORE LINE!"); // This prints
}
public void render() {
System.out.println("MADE IT TO GAME SCREEN"); // This does not prints
...
}
我需要知道为什么渲染方法没有触发。
我真的不知道从哪里开始。我能找到的每一个其他资源都告诉我要确保我在游戏扩展课程中有super.render() - 我这样做。我试图删除我认为不相关的代码并留下相关内容,但如果有任何其他信息需要弄清楚这里发生了什么,请告诉我。
这也是我与LibGDX的第一个项目之一,所以如果这是一个愚蠢的问题,请提前抱歉!
感谢。
答案 0 :(得分:4)
public void render()
课程中 public void render(float deltaTime)
必须为GameScreen
。我假设你在GameScreen
中有另一个带deltaTime的方法,它会被触发,否则它将无法编译。