Java 纹理从区域到纹理
我正在尝试从TextureAtlas中获取纹理区域,但作为纹理 我试过:Java 纹理从区域到纹理,java,libgdx,textures,Java,Libgdx,Textures,我正在尝试从TextureAtlas中获取纹理区域,但作为纹理 我试过: textureAtlas.findRegion("explosion").getTexture(); 但它会返回整个纹理图谱图像 我需要这个类,我创建了类似于雪碧。我避免使用雪碧,因为它不能满足我的需要 我找到的所有答案都是针对精灵类的。你可能误解了纹理、纹理区域和纹理特拉斯的概念。做你想做的事没有简单的方法,这样做也没有任何意义。这样做首先会破坏使用TextureAtlas的全部目的 您可以将纹理视为磁盘上图像文件的一
textureAtlas.findRegion("explosion").getTexture();
但它会返回整个纹理图谱图像
我需要这个类,我创建了类似于雪碧。我避免使用雪碧,因为它不能满足我的需要
我找到的所有答案都是针对精灵类的。你可能误解了
纹理
、纹理区域
和纹理特拉斯
的概念。做你想做的事没有简单的方法,这样做也没有任何意义。这样做首先会破坏使用TextureAtlas
的全部目的
您可以将纹理
视为磁盘上图像文件的一对一映射。例如,.png
文件。因此,基本上,对于磁盘上的每个图像文件,都可以有一个纹理
实例。但是,如果磁盘上没有加载纹理的图像文件,则不能有纹理
实例。(严格地说,您可以创建一个纹理
实例,而不需要磁盘上的文件,例如可以说是内存中的文件,但这与您的问题无关)
TextureAtlas
用于将多个较小的图像合并到磁盘上的单个图像文件中。这是使用例如TexturePacker
来完成的,该工具使用多个图像作为磁盘上的文件作为输入,然后将其组合到磁盘上的单个图像文件中。之所以这样做,是因为拥有一个(或几个)大图像比拥有许多小图像更有效
因此,由于您使用的是纹理特拉斯(这是一件好事),这意味着您的磁盘上只有一个图像文件。因为磁盘上只有一个图像文件,所以您也只有(并且需要)一个Texture
实例
通常不应直接使用纹理。相反,您应该使用纹理区域
。这只是一个类,它指定了纹理
,以及该纹理中的特定区域(x
,y
,宽度
和高度
)。这正是你要找的。您可以直接绘制纹理区域
,例如使用SpriteBatch
。这是一种非常方便的指定图像的方法
请注意,Sprite
类扩展了TextureRegion
,只添加了一些额外的方便属性。因此,如果您有Sprite
,那么您也有一个texturereregion
,如果不需要,您可以忽略其他属性
因此,如果您创建了一个类,该类需要TextureAtlas
中的图像,并且依赖Texture
实现该类,那么您的实现是错误的。在这种情况下,您最好使用TextureRegion
而不是Texture
来修改该实现。谢谢您的解释。我没有使用雪碧,因为我无法添加两种不同的纹理。