当调用class时,它不会绘制我的新舞台
When class is called, it won't draw my new stage
我一直无法在我的游戏中添加自己的自定义字体,并且想知道为什么 libgdx 不喜欢在我的 class 被调用后绘制我设置的新舞台?
每当一个项目与另一个项目相交并且主 class 调用这个 class 的 .render() 方法时,就会调用 class。我希望它将字符串 "game over" 绘制到屏幕上,但是我在 stage.act(delta)
:
处收到错误
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.mygdx.game.GameOverScreen.render(GameOverScreen.java:70)
at com.mygdx.game.MyGdxGame.render(MyGdxGame.java:191)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:214)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:120)
这是我的代码:
class GameOverScreen implements Screen {
Label gameoverstring;
private Stage stage;
SpriteBatch spritebatch;
BitmapFont white;
LabelStyle headingStyle;
@Override
public void show() {
stage = new Stage();
white = new BitmapFont(Gdx.files.internal("new.fnt"), false);
headingStyle = new LabelStyle(white, Color.WHITE);
gameoverstring = new Label("game ovaaaa!", headingStyle);
gameoverstring.setFontScale(3);
stage.addActor(gameoverstring);
}
@Override
public void render(float delta) {
//gameoverstring.setPosition(0, 0);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
第 70 行(在您的 render
方法中)为空。请参阅 What is a NullPointerException, and how do I fix it? 了解一些背景信息。
我怀疑您的问题是 render
中的 stage
为空。可能是因为您的 show
方法尚未被调用。
我一直无法在我的游戏中添加自己的自定义字体,并且想知道为什么 libgdx 不喜欢在我的 class 被调用后绘制我设置的新舞台?
每当一个项目与另一个项目相交并且主 class 调用这个 class 的 .render() 方法时,就会调用 class。我希望它将字符串 "game over" 绘制到屏幕上,但是我在 stage.act(delta)
:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.mygdx.game.GameOverScreen.render(GameOverScreen.java:70)
at com.mygdx.game.MyGdxGame.render(MyGdxGame.java:191)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:214)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:120)
这是我的代码:
class GameOverScreen implements Screen {
Label gameoverstring;
private Stage stage;
SpriteBatch spritebatch;
BitmapFont white;
LabelStyle headingStyle;
@Override
public void show() {
stage = new Stage();
white = new BitmapFont(Gdx.files.internal("new.fnt"), false);
headingStyle = new LabelStyle(white, Color.WHITE);
gameoverstring = new Label("game ovaaaa!", headingStyle);
gameoverstring.setFontScale(3);
stage.addActor(gameoverstring);
}
@Override
public void render(float delta) {
//gameoverstring.setPosition(0, 0);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
第 70 行(在您的 render
方法中)为空。请参阅 What is a NullPointerException, and how do I fix it? 了解一些背景信息。
我怀疑您的问题是 render
中的 stage
为空。可能是因为您的 show
方法尚未被调用。