java - libGDX : desgin game assets according different size screens

标签 java android ios libgdx

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

例如:

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

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

游戏 Assets 是否有标准设计?

谁能帮帮我?

最佳答案

好吧,有很多方法可以实现您的目标。这在很大程度上取决于您创建的游戏,因此我只能简要概述一下适合我的游戏:

创建比您支持的最大屏幕更大的 Assets 。 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 屏幕像素适合 Assets 像素的 TextureAtlas。然后从该图集中加载。

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

关于java - libGDX : desgin game assets according different size screens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551969/

相关文章:

Java - "return object"和 "return (object)"之间的区别

java - 使用 java 10 apache tomcat 9 未在 eclipse 中启动,但其服务已在系统中启动

java - ListFragment,不显示数据

javascript - 需要从 api 调用中获取响应 json

Android 向用户显示来自后台应用程序或服务的是-否对话框

ios - 从 XIB 创建新的 UIView 对象

android - 重写 XML 文件后出现错误 java.lang.NoSuchMethodError : No static method getFont. ..

android - 为什么我需要一个服务来读取 google Firebase token ?

iOS 为什么在这种情况下 backBarButtonItem 为零

ios - 使用 Cocoapods 和 AFNetworking 构建错误