libGDX:根据不同尺寸的屏幕设计游戏资产

libGDX:根据不同尺寸的屏幕设计游戏资产

问题描述:

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

例如:

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

此行的Galaxy Note 3(1080×1920)的分辨率低

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

任何人都可以帮到我吗?

+0

你读过这个吗? https://developer.android.com/guide/practices/screens_support.html – nasch

+1

这对于只适用于原生Android应用程序的libGDX项目不起作用。 –

+0

@nasch是的,我之前读过它。但它适用于Android项目。 – Crowni

那么有很多方法可以实现你的目标。这很大程度上取决于您创建的游戏,因此我只能简单概述一下适用于我的内容:

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

为您所支持的每个TEXTURE_SIZE创建一个TextureAtlas。智能手机有一个MAX_TEXTURE_SIZE可以加载到内存中。它通常是1024x1024,2048x2048,4096x4096(较新的手机和桌面图形卡甚至可以支持更像8192x8192或更大) 我创建了3纹理贴图: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。

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

  • 你可以计算出当前设备的完美特克塞尔大小和重新包装为1的TextureAtlas:1的屏幕像素拟合资产像素。然后从该地图集加载。

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