【问题标题】:libGDX : desgin game assets according different size screenslibGDX : 根据不同尺寸的屏幕设计游戏资源
【发布时间】:2015-11-05 18:19:24
【问题描述】:

我为我的游戏开发和设计资产(背景、按钮等),但是当我设计任何资产时,我不知道我要设计哪种屏幕尺寸? Android 设备或iOS 设备中的许多屏幕尺寸不同。所以,如果我从大屏幕开始设计,其他设备的屏幕尺寸会不好,旧设备上的资产会太重,反之,如果我从小屏幕开始设计,其他设备的屏幕分辨率会很低(如果我用例如StrecthViewport)。

例如:

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

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

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

谁能帮帮我?

【问题讨论】:

  • 这不适用于仅适用于原生 Android 应用的 libGDX 项目。
  • @nasch 是的,我以前读过。但它适用于 android 项目。
  • @Thomas Pronold 好的,我设计的屏幕尺寸是多少? .我是否设计了许多不同大小的同一资产??

标签: java android ios libgdx


【解决方案1】:

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

创建比您支持的最大屏幕更大的资产。 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 的设备上,这个 sn-p 可以做到。

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 版本可能也能正常工作,然后加载较小的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多