Java 如何将TextureAlas用于动画而不是TextureRegion?-libgdx

Java 如何将TextureAlas用于动画而不是TextureRegion?-libgdx,java,libgdx,sprite,game-engine,texture-atlas,Java,Libgdx,Sprite,Game Engine,Texture Atlas,我一直在试图找出用使用TextureAtlas而不是将纹理分割成不同区域的东西来替换此代码的最佳方法。使用它会更容易吗 private void loadAllAnimations(){ // Walking animation Texture texture = Utility.getTextureAsset(characterSpritePath); // Gets default.png TextureAtlas atlas = Utility.getAtlas(

我一直在试图找出用使用TextureAtlas而不是将纹理分割成不同区域的东西来替换此代码的最佳方法。使用它会更容易吗

 private void loadAllAnimations(){
    // Walking animation
    Texture texture = Utility.getTextureAsset(characterSpritePath); // Gets default.png
    TextureAtlas atlas = Utility.getAtlas(characterAtlasPath); Gets default.atlas
    TextureRegion[][] textureFrames = TextureRegion.split(texture, FRAME_WIDTH, FRAME_HEIGHT);
    walkDownFrames = new Array<TextureRegion>(3);
    walkLeftFrames = new Array<TextureRegion>(3);
    walkRightFrames = new Array<TextureRegion>(3);
    walkUpFrames = new Array<TextureRegion>(3);

    for (int i = 0; i < 4; i++){
        for (int j = 0; j < 3; j++){
            TextureRegion region = textureFrames[i][j];
            if (region == null){
                Gdx.app.debug(TAG, "Got null animation frame " + i + "," + j);
            }
            switch (i){
                case 0:
                    walkDownFrames.insert(j, region);
                    break;
                case 1:
                    walkLeftFrames.insert(j, region);
                    break;
                case 2:
                    walkRightFrames.insert(j, region);
                    break;
                case 3:
                    walkUpFrames.insert(j, region);
                    break;
            }
        }
    }

    walkDownAnimation = new Animation<>(0.25f, walkDownFrames, Animation.PlayMode.LOOP);
    walkLeftAnimation = new Animation<>(0.25f, walkDownFrames, Animation.PlayMode.LOOP);
    walkRightAnimation = new Animation<>(0.25f, walkRightFrames, Animation.PlayMode.LOOP);
    walkUpAnimation = new Animation<>(0.25f, walkUpFrames, Animation.PlayMode.LOOP);
}
雪碧片:


如果有什么事情我搞砸了或者很容易解决,我会喜欢的。(我也在使用《精通LibGDX游戏开发》一书作为指导。谢谢大家!

在原始纹理图像文件中,在帧编号前加下划线。比如说

  • Defaltmanbackalkin_1.png
  • defaltmanbackalkin_2.png
  • Defaltmanbackalkin_3.png
  • Defaltmanbackalkin_4.png
  • 等等
然后,您可以从atlas中获取整个列表作为数组传递给动画构造函数:

Animation<TextureRegion> defaultManBackWalkinAnimation =
    Animation<>(0.25f, textureAtlas.findRegions("DefaltManBackWalkin"));
Animation defaultmanbackalkinanimation=
动画(0.25f,textureAtlas.findRegions(“DefaltmanBackalkin”);
Animation<TextureRegion> defaultManBackWalkinAnimation =
    Animation<>(0.25f, textureAtlas.findRegions("DefaltManBackWalkin"));