libgdx无法将纹理加载到数组中

时间:2016-06-16 14:50:42

标签: java libgdx

使用libgdx,我创建了一个2D游戏。我想将所有纹理加载到数组中。所以我为他们创造了一个课程。我希望将图像数组循环到render()

public class LoadingImages {
    public Texture[] images;

    public area1() {
        images[0] = new Texture(Gdx.files.internal("img/image1.jpg"));
    }
}

当我尝试运行它时,这给了我错误:

Exception in thread "LWJGL Application" java.lang.NullPointerException
          at com.mygame.game.LoadingImages.loading(LoadingImages.java:31)

图像数量将根据区域而变化。

1 个答案:

答案 0 :(得分:2)

另见What is a NullPointerException, and how do I fix it?

您正在尝试访问尚未分配的变量:images[0]。在使用数组中的第一个元素之前,您必须创建一个至少大小为1的数组。所以,将其改为:

public *void* area1() {
    images = new Texture[1];
    images[0] = new Texture(Gdx.files.internal("img/image1.jpg"));
}

话虽如此,您的异常与您的代码不符。此外,您可能想重新考虑您的方法,使用许多纹理会很快影响性能,因为它意味着刷新批处理。最好将图像打包成单个纹理。如果您想通过索引访问图像,那么仍然可以。 See this

同样AssetManager比手动加载所有资产更方便。 See this