Answers:
首先,Texture vs TextureRegion:当您执行Texture t = new Texture(path)之类的操作时,您正在将其加载到GPU中。另外,您应该加载2个纹理的幂。您可以使用其他分辨率(Texture.setEnforcePotImages = false),但建议使用2的pow。
现在,TextureRegion从纹理中获取一个“片段”,而不管其尺寸如何。具有一个Texture和该Texture的多个TextureRegion的优点是,您无需将每个区域都加载到GPU中。
正如您可能在想的那样,当您想使用SpriteBatch进行绘制时,使用TextureRegion而不是多个Textures效率更高,很抱歉,我的英语还不够好。这是一个很好的解释:Textures TextureRegion和SpriteBatch
现在,您要对所有子画面和图像使用TextureRegion和一幅分辨率为2的单幅图像。是否必须创建具有所有坐标和尺寸的TextureRegions?您需要打开油漆来计算像素吗?不,你不知道。您可以使用诸如TexturePacker之类的东西。它将所有纹理打包到一个图像中,并创建一个具有所有尺寸和坐标的.pack文件。
结果将是这样的:
代替创建Texture,而是创建TextureAtlas,如下所示:
现在,创建您的TextureRegions将非常简单:
(请注意,区域名称是不带扩展名的原始图像的名称)。
Sprite保留使用Batch绘制2D Sprite的几何,颜色和纹理信息。这意味着,您可以轻松地旋转它们并移动它们。我已经创建了自己的Entity类,并且不需要Sprite类。您可能会做同样的事情。我觉得这节课不是真的有用。
图像类继承自Actor。这意味着您可以将其添加到舞台中。它是Scene2D软件包的一部分。如果您是libgdx的新手,并且您不了解此软件包,那么对于您而言,这是关于该类的足够信息。这是一个非常有趣的话题,但不能回答这个问题。
希望能帮助到你 :)
TextureRegion
可以引用纹理的不同(或重叠)部分,而Texture
始终引用整个图像。由于切换纹理很昂贵,所以这很好。您的描述听起来像是TextureRegion
处理稀疏纹理(la。GL_ARB_sparse_texture
),但libGDX及其运行的大多数硬件都不支持该扩展。