考えられる理由は、レンダリングメソッドで使用しているグローバルではなく、ローカルBitmapFont
を初期化している可能性があります。
public class MyGdxGame extends Game {
Texture texture;
SpriteBatch spriteBatch;
BitmapFont font;
@Override
public void create() {
BitmapFont font=new BitmapFont(); // You initialise local, global is still Null
texture=new Texture("badlogic.jpg");
spriteBatch=new SpriteBatch();
}
@Override
public void render() {
super.render();
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(texture,100,100);
font.draw(spriteBatch,"HELLO WORLD",100,100); // Now here NPE
spriteBatch.end();
}
}
デフォルトのコンストラクタ
BitmapFont font=new BitmapFont();
は内部 フォントファイルcom/badlogic/gdx/utils/arial-15.fnt
や画像ファイルcom/badlogic/gdx/utils/arial-15.png
のためのもう一つのための2つのFileHandle
1を作成します。私は思っていません、それはNPEが他のいくつかの可能性があります投げるException
。
BitmapFont()を呼び出すと、実際にLibGDX JAR(https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/)のフォント(Arial-15)が読み込まれます。 g2d/BitmapFont.html#BitmapFont--)。だから、おそらくあなたのラッパークラスはnullまたは何か、または多分あなたのLibGDX JAR(おそらく)で起こっている奇妙なことがありますか? – mcw
それで何ができますか? – kschnied
あなたのクラスのより多くのコードを表示する、私はあなたがいくつかの他の問題があると思います – Aryan