LibGdx 纹理包装
LibGdx Texture packing
我想在我的 LibGdx 项目中使用动画精灵角色。
我有 sprite sheets 以及用于 sprite 动画的单独图像。
创建纹理图集时,我是否必须使用精灵 sheet 本身或单独的图像进行打包?
哪种方法最好?
目前我正在使用单独的图像为每个精灵动画创建单独的图集,并将包和 png 文件添加到资产文件夹。这是工作。但我希望有一些方法可以有效地为游戏使用一个pack文件和一个png文件。
我还想知道如何命名这些单独的精灵 sheet 图片。
我将其命名为 "name_01,name_02.....etc".
请建议为整个游戏创建包含精灵 sheet 和非精灵图像的单一纹理图集的更好方法。
您将不得不使用纹理打包器。 https://code.google.com/archive/p/libgdx-texturepacker-gui/
创建精灵 sheet 作为动画的一个纹理并将它们打包。
将所有精灵动画图像打包到一个文件包中。
如果要使用 AssetManager,则从 AssetManager 获取 TextureAtlas,或者您可以创建 TextureAtlas 对象。
然后就可以调用getArray(gameAtlas.findRegion("resourceName"),x,y);
方法了。 returns TextureRegion 数组可以用作 Animation class.
的参数
public TextureRegion[] getArray(TextureRegion textureRegion,int column,int row){
TextureRegion[][] arrayTextureRegion= textureRegion.split(textureRegion.getRegionWidth()/column,textureRegion.getRegionHeight()/row);
TextureRegion textureRegion1[]=new TextureRegion[arrayTextureRegion[0].length*arrayTextureRegion.length];
for (int i=0;i<arrayTextureRegion.length;i++)
for (int j=0;j<arrayTextureRegion[i].length;j++)
textureRegion1[i*arrayTextureRegion[i].length+j]=arrayTextureRegion[i][j];
return textureRegion1;
}
我想在我的 LibGdx 项目中使用动画精灵角色。
我有 sprite sheets 以及用于 sprite 动画的单独图像。
创建纹理图集时,我是否必须使用精灵 sheet 本身或单独的图像进行打包? 哪种方法最好?
目前我正在使用单独的图像为每个精灵动画创建单独的图集,并将包和 png 文件添加到资产文件夹。这是工作。但我希望有一些方法可以有效地为游戏使用一个pack文件和一个png文件。
我还想知道如何命名这些单独的精灵 sheet 图片。 我将其命名为 "name_01,name_02.....etc".
请建议为整个游戏创建包含精灵 sheet 和非精灵图像的单一纹理图集的更好方法。
您将不得不使用纹理打包器。 https://code.google.com/archive/p/libgdx-texturepacker-gui/
创建精灵 sheet 作为动画的一个纹理并将它们打包。
将所有精灵动画图像打包到一个文件包中。
如果要使用 AssetManager,则从 AssetManager 获取 TextureAtlas,或者您可以创建 TextureAtlas 对象。
然后就可以调用getArray(gameAtlas.findRegion("resourceName"),x,y);
方法了。 returns TextureRegion 数组可以用作 Animation class.
public TextureRegion[] getArray(TextureRegion textureRegion,int column,int row){ TextureRegion[][] arrayTextureRegion= textureRegion.split(textureRegion.getRegionWidth()/column,textureRegion.getRegionHeight()/row); TextureRegion textureRegion1[]=new TextureRegion[arrayTextureRegion[0].length*arrayTextureRegion.length]; for (int i=0;i<arrayTextureRegion.length;i++) for (int j=0;j<arrayTextureRegion[i].length;j++) textureRegion1[i*arrayTextureRegion[i].length+j]=arrayTextureRegion[i][j]; return textureRegion1; }