libGDX:根据不同大小屏幕设计的游戏资产

时间:2015-11-05 18:19:25

标签: java android ios libgdx

我开发和设计我的游戏资产(背景,按钮等),但是当我设计任何资产时,我不知道我设计了哪种屏幕尺寸? Android设备或iOS设备中的许多屏幕尺寸不同。因此,如果我开始设计最大的屏幕,其他设备屏幕的尺寸将不好,旧设备上的资产将太重,如果我开始设计小屏幕,其他设备屏幕将是低分辨率(如果我使用)例如StrecthViewport)。

例如:

stage = new Stage(new StretchViewport(480, 800));

Galaxy note 3(1080 x 1920)上的这一行是低分辨率

游戏资产是否有标准设计?

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:3)

有很多方法可以实现您的目标。这很大程度上取决于你创造的游戏,所以我只能简单地概述一下对我有用的东西:

创建比您支持的最大屏幕更大的资产。 F.E.你支持2560x1600,然后使用像3200x2000这样的东西。

为您支持的每个TEXTURE_SIZE创建一个TextureAtlas。智能手机的MAX_TEXTURE_SIZE可以加载到内存中。它通常是1024x1024,2048x2048,4096x4096(较新的手机和桌面图形卡甚至可能更支持8192x8192或更大) 我创建了3个TextureAtlas:4096,缩放比例为1:1,2048缩放比例为50%,1024缩放比例为25%。

在设备上阅读MAX_TEXTURE_SIZE,这个代码片段可以做到这一点。

public final static int maxTextureSize() {
        /**
         * See http://lwjgl.org/forum/index.php?topic=1314.0;wap2
         */
        IntBuffer max = BufferUtils.newIntBuffer(16);
        max.clear();
        Gdx.gl.glGetIntegerv(GL20.GL_MAX_TEXTURE_SIZE, max);
        return max.get(0);
    }

然后根据支持MAX_TEXTURE_SIZE加载TextureAtlas。

你甚至可以走得更远。只是一些想法:

  • 您可以计算当前设备的完美Texel大小,并重新打包具有1:1屏幕像素拟合资产像素的TextureAtlas。然后从该地图集加载。

  • 有些设备可能会接受4096纹理尺寸,但它们的屏幕非常小,因此2048版本可能也可以正常工作,然后加载较小的版本。