Java libgdx可以';t将纹理加载到数组

Java libgdx可以';t将纹理加载到数组,java,libgdx,Java,Libgdx,使用libgdx,我正在创建一个2D游戏。我想将所有纹理加载到一个数组中。所以我为他们创建了一个类。我想在render()中循环图像数组: 当我尝试运行它时,这会给我带来错误: Exception in thread "LWJGL Application" java.lang.NullPointerException at com.mygame.game.LoadingImages.loading(LoadingImages.java:31) 图像的数量将因区域而异。另请参

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

当我尝试运行它时,这会给我带来错误:

Exception in thread "LWJGL Application" java.lang.NullPointerException
          at com.mygame.game.LoadingImages.loading(LoadingImages.java:31)
图像的数量将因区域而异。

另请参见

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

public *void* area1() {
    images = new Texture[1];
    images[0] = new Texture(Gdx.files.internal("img/image1.jpg"));
}
尽管如此,您的异常与代码不匹配。此外,您可能需要重新考虑您的方法,使用许多纹理将很快影响性能,因为这意味着刷新批处理。最好将图像打包到单个纹理中。如果你想通过索引访问你的图像,那还是有可能的


另外,
AssetManager
比手动加载所有资产方便得多

请提供您在com.mygame.game.LoadingImages.loading(LoadingImages.java:31)的线程“LWJGL应用程序”java.lang.NullPointerException中遇到的错误。31是图像[0]=新纹理(Gdx.files.internal(“img/image1.jpg”))处的行号;谢谢:)。请更新你的问题。我的目标是创建一个类,可以加载某个特定区域的所有图像、动画和声音,能够在渲染函数中绘制图像,并且由于每个区域都有不同数量的图像,我的想法是在纹理传递到和数组时加载所有图像,然后在渲染功能中对数组进行for循环我的游戏是所有2d图像和soud,区域1有1个背景图像和一些spryte动画,当玩家从区域1移动到区域2时,背景会发生变化,但一些精灵动画是相同的,其他是新的,最好的方法是什么?现在我将背景加载为单个图像,精灵动画加载为atlas纹理。对于每个已设置动画的对象
public *void* area1() {
    images = new Texture[1];
    images[0] = new Texture(Gdx.files.internal("img/image1.jpg"));
}