我使用Freetype,工具和intellej的box2d创建了我的项目,并尝试在android studio中运行:

BitmapFont font = new BitmapFont();


它给了我一个空指针异常。我尝试过手动将字体放入assests文件夹中,但这没有帮助。我能够成功运行默认项目(红色背景和图片),但从未成功运行过该行。

最佳答案

可能的原因可能是您正在初始化本地BitmapFont而不是在render方法中使用的全局。

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();


内部创建两个FileHandle,其中一个用于
字体文件com/badlogic/gdx/utils/arial-15.fnt和另一个imageimage com/badlogic/gdx/utils/arial-15.png。我不认为,它抛出NPE可能是其他Exception

08-05 07:43