gpt4 book ai didi

java - TextureAtlas 区域到 Texture

转载 作者:行者123 更新时间:2023-11-29 04:21:57 26 4
gpt4 key购买 nike

我正在尝试从 TextureAtlas 获取纹理区域,但作为纹理。

我试过:

textureAtlas.findRegion("explosion").getTexture();

但它返回整个纹理图集图像。

我创建的类似于 Sprite 的类需要这个。我避免使用 Sprite,因为它无法满足我的需求。

我找到的所有答案都是针对 Sprite 类的。

最佳答案

您可能误解了TextureTextureRegionTextureAtlas 的概念。没有简单的方法可以做你想做的事,这样做也没有任何意义。这样做首先会破坏使用 TextureAtlas 的全部目的。

您可以将 Texture 视为与磁盘上图像文件的一对一映射。例如 .png 文件。因此,基本上,对于您拥有的磁盘上的每个图像文件,您都可以拥有一个 Texture 实例。但是如果磁盘上没有从中加载纹理的图像文件,则您不能拥有 Texture 实例。 (严格来说,您可以创建一个没有磁盘文件的 Texture 实例,例如可以说是一个内存文件,但这与您的问题无关)

TextureAtlas 用于将多个较小的图像组合成磁盘上的单个图像文件。这是使用例如完成的TexturePacker,这是一个使用多个图像作为磁盘上的文件作为输入,然后将其组合成磁盘上的单个图像文件的工具。这样做是因为拥有一个(或几个)大图像比拥有许多小图像的性能要高得多。

因此,因为您使用的是 TextureAtlas(这是一件好事),这意味着磁盘上只有一个图像文件。因为磁盘上只有一个图像文件,所以您也只有(并且需要)一个 Texture 实例。

您通常不应该直接使用 Texture。相反,您应该使用 TextureRegion。这只是一个指定 Texture 以及特定区域(xywidthheight) 在该纹理中。这正是您要寻找的。您可以直接绘制一个 TextureRegion,例如使用 SpriteBatch。所以这是一种非常方便的指定图像的方式。

请注意,Sprite 类扩展了 TextureRegion 并且只是添加了一些额外的方便属性。因此,如果您有 Sprite,那么您还有一个 TextureRegion,如果您不需要它们,您可以简单地忽略它们。

因此,如果您创建的类需要 TextureAtlas 中的图像并为此依赖于 Texture,那么您的实现是错误的。在这种情况下,您可以做的最好的事情是使用 TextureRegion 而不是 Texture 来修改该实现。

关于java - TextureAtlas 区域到 Texture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com