使用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)
图像数量将根据区域而变化。
答案 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