2016-01-21 25 views
2

我试图写一个纸牌游戏,这将在中间,彩色边框和潜在的象征在左上角有一个形象。我正在使用libgdx和stage/scene2d。Libgdx - 一组,最佳实践在3个图像 - 也透支

图像将根据套装而变化(这些不是您正常的52套牌类型),边框颜色会改变以匹配套装,尽管此颜色可以由用户预先确定,所以我不能预先保存彩色图像(尽管我想我可以预先保存大约15种不同的颜色,并给用户一个15的选择),符号将只在某些卡片上,而不是其他卡片上。

first card second card

你可以从我已经添加了两个图像看到我有两个差异图像,边框颜色和符号。

我的问题是有关团体和透支。

1)我认为我应该成立一个有3张图像的组合,我希望这样不会减慢我的游戏速度,因为我一次可以在屏幕上显示30张卡片,并且30组每个中的3张图像可能会画很多。这是正确的,并且LibGDX能够处理它吗?

2)我该如何做彩色边框?我应该让整个卡片有一个彩色的矩形,并在顶部绘制图像?绘制方法会试图绘制图像下方的彩色部分,从而浪费GPU/CPU时间吗?我的一个朋友说我可以只有一个白色图像,然后在代码中使用RGB值设置颜色?这可能吗?这意味着我只能有一个单一的JPG,这将更好的apk大小。

3)或者我应该忽略使用JPG图片,并尝试使用ShapeRenderer绘制彩色方块?

谢谢,我希望这些问题根本就不是一个职位太多。

回答

0
  1. 当然也不会耽误你的游戏 - 90(30组×3个纹理)精灵在屏幕上就像什么的(我猜的)每个框架 - 所以LibGDX会做的事也。

    虽然它并不管如何,这些图形将被保存!请使用一个TextureAtlas与所有的纹理,而不是在许多文件许多纹理 - 您可以通过使用TexturePacker(像这样免费版一个基本的使用都会好的)准备地图集。

    原因是,如果你使用了很多单一的图形,那么在渲染它们之前,LibGDX需要在GPU bufor中切换图形(也许它不是完美的术语) - 如果你有一个大纹理(包括其他纹理)不需要切换任何东西,因为buffor中没有任何变化。

    要获得有关使用的详细信息TextureAtlas看一看的manual

  2. 是的,你可以“色”的Actor(如Image)通过使用例如

    actor.addAction(Actions.color(new Color(1f,1f,1f, 0.2f), 2f)); 
    

    另一种方法是有1px x 1px每种颜色的纹理(包装在您的Texture Atlas中),只是为了改变它的大小。 没有理由保持全尺寸的单色纹理,因为它是伟大的空间和记忆的空间。

  3. 使用ShapeRenderer通常不是个好主意 - 当然它有时会有所帮助,但绘制精灵会有更好的表现。

    您通常对性能有点害怕但是如果您想要保存CPU避免ShapeRenderer似乎是个好主意。