A和B之间哪种表现更好?
答:batch.draw(雪碧,x,y,宽度,高度);
B:sprite.draw(批);sprite.setPosition(x,y);
可能涉及到旋转或调整大小。如果你考虑的是性能而不是方便,还有什么更好呢?
发布于 2021-01-26 18:36:35
它们没有同等的结果,所以没有必要比较它们的性能。第一个(A)完全忽略雪碧的所有特征,如颜色、位置、比例和旋转。它永远不应该被使用,而且是可能的,因为一个不幸的设计决定让雪碧成为TextureRegion的一个子类。我认为libGDX的最初创建者基于GitHub上的评论承认了一个设计错误。
在我看来,Sprite类在大多数情况下根本不应该使用,因为它将TextureRegion (图像资产)与游戏世界对象(模拟数据)混为一谈。您应该定义您自己的GameObject类,它有一个TextureRegion变量和变量,用于您所使用的特性(宽度、高度、比例等)。然后使用任何具有参数的batch.draw重载来绘制它,以满足您所使用的所有特性。
为了更进一步,您可以编写自己的可绘制的抽象包装器类,该类可以包含用于保存TextureRegion或Animation<TextureRegion>的变体。然后,GameObject可以引用可绘图,并且可以轻松地将不同类型的资产交换为GameObject。
https://stackoverflow.com/questions/65905902
复制相似问题