Java libGdx阵列<;纹理区域>;无法分配给Sprite

Java libGdx阵列<;纹理区域>;无法分配给Sprite,java,libgdx,Java,Libgdx,在StackOverflow和Google上搜索了很长时间后,我决定自己写一个问题,因为我没有找到解决问题的方法。我从一本“学习libgdx游戏开发”的书中学习libgdx。我确认我的代码与书中提供的代码完全相同。在达到此部分之前,一切正常: Sprite spr = new Sprite(regions.random()); Region.randoms()是一个数组。如果我从资产类中添加资产的直接实例,它可以正常工作,但是如果我想从数组中添加随机资产,它会崩溃。为什么? private v

在StackOverflow和Google上搜索了很长时间后,我决定自己写一个问题,因为我没有找到解决问题的方法。我从一本“学习libgdx游戏开发”的书中学习libgdx。我确认我的代码与书中提供的代码完全相同。在达到此部分之前,一切正常:

Sprite spr = new Sprite(regions.random());
Region.randoms()
是一个
数组
。如果我从
资产
类中添加资产的直接实例,它可以正常工作,但是如果我想从
数组
中添加随机资产,它会崩溃。为什么?

private void initTestObj () {
    // creates new array for 5 sprite's 
    testSprites = new Sprite[5];

    // Create a list of texture regions
    Array<TextureRegion> regions = new Array<TextureRegion>();
    regions.add(Assets.instance.bunny.head);
    regions.add(Assets.instance.ballon.ballon);
    regions.add(Assets.instance.spider.spider);

    System.out.println("xxxxxxxxxxxxxxxxx test before Sprite xxxxxxxxxxxxxxxxxxxxx");
    System.out.println(regions.size);

    //create new sprite's using a random texture region
    for( int i = 0; i < testSprites.length ; i++) {
        Sprite spr = new Sprite(regions.random()); //<<<< Main problem

        System.out.println(".....................test after sprite...............");

        //define sprite size to be 1x1 in game world
        spr.setSize(1 , 1);

        //set origin to sprite's center
        spr.setOrigin(spr.getWidth() / 2.0f, spr.getHeight() / 2.0f);

        //calculate random position for sprite
        float randomX = MathUtils.random(-2.0f, 2.0f);
        float randomY = MathUtils.random(-2.0f, 2.0f);
        spr.setPosition(randomX, randomY);

        // put new sprite into array
        testSprites[i] = spr;   
    }
    //set first sprite as selected one 
    selectedSprite = 0;
private void initTestObj(){
//为5个精灵创建新阵列
testSprites=新Sprite[5];
//创建纹理区域的列表
数组区域=新数组();
添加(Assets.instance.bunny.head);
添加(Assets.instance.ballon.ballon);
添加(Assets.instance.spider.spider);
System.out.println(“精灵XXXXXXXXXXXXXXXXXXXXXX之前的XXXXXXXXXXXXXX测试”);
System.out.println(regions.size);
//使用随机纹理区域创建新精灵
for(int i=0;i精灵spr=新精灵(regions.random())//我最终成功了纹理区域数组没有问题资产有问题,显然你不能像项目_1那样命名它们,因为打包后纹理打包器丢弃了最后的_1a,而你只留下了项目。

你确定你的纹理区域不是空的吗?嘿,保罗,谢谢你的回复。似乎没有当我在零位置运行'Sprite spr=new Sprite(regions.get(0));'时,您了解到了什么资产存在并显示在屏幕上,但它似乎没有向数组添加其他资产。当我运行'System.out.println(regions.get(2));&System.out.println(regions.get(1))'它返回null,但如果我运行Array.size,它返回3,这不意味着数组中有3个实例吗?感谢您指向正确的方向。我最终成功了纹理区域数组没有问题,资源有问题,显然您不能将它们命名为项_1,因为在打包纹理打包器之后丢弃结尾处的_1a,只留下一个项目。