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

Java libGDX:根据不同大小的屏幕设计游戏资产,java,android,ios,libgdx,Java,Android,Ios,Libgdx,我开发和设计游戏的资源(背景、按钮等),但当我设计任何资源时,我不知道我应该设计哪个屏幕尺寸?。Android设备或iOS设备中的许多屏幕大小不同。因此,如果我开始设计最大的屏幕,其他设备屏幕的尺寸将不好,旧设备上的资产将太重,反之,如果我开始设计小屏幕,其他设备屏幕的分辨率将很低(如果我使用例如StrecthViewport) 例如: stage = new Stage(new StretchViewport(480, 800)); 银河注3(1080 x 1920)上的这条线分辨率很低 游

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

例如:

stage = new Stage(new StretchViewport(480, 800));
银河注3(1080 x 1920)上的这条线分辨率很低

游戏资产是否有标准设计


有人能帮我吗?

实现你的目标有很多方法。这在很大程度上取决于您所创建的游戏,因此我只能简要介绍一下适合我的游戏:

创建比您支持的最大屏幕更大的资产。例如,您支持2560x1600,然后使用类似于3200x2000的东西

为支持的每个纹理大小创建一个TextureAtlas。智能手机的最大纹理大小可以加载到内存中。其通常为1024x102048x2048 4096x4096(较新的手机和桌面图形卡甚至可能支持更大的8192x8192或更大) 然后我创建了3个TextureAtlas:4096,比例为1:1,2048,比例为50%,1024,比例为25%

在读取最大纹理大小的设备上,此代码段可以做到这一点

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);
    }
然后根据支持的最大纹理大小加载TextureAlas

你甚至可以更进一步。只是一些想法:

  • 您可以计算当前设备的完美纹理大小,并重新打包具有1:1屏幕像素的TextureAtlas。然后从地图集上下载

  • 一些设备可能接受4096纹理大小,但其屏幕非常小,因此2048版本也可以工作,然后加载较小的


你读过这个吗?这不适用于libGDX项目,仅适用于本机Android应用程序。@nasch是的,我以前读过。“但它适用于android项目。”托马斯·普罗诺德好的,我设计的屏幕大小是多少。我是否为同一资产设计了许多不同规模的产品??