2015-11-05 119 views
3

我開發和設計遊戲的資產(背景,按鈕等),但是當我設計任何資產時,我不知道我設計的屏幕尺寸是多少? 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

回答

3

那麼有很多方法可以實現你的目標。這很大程度上取決於您創建的遊戲,因此我只能簡單概述一下適用於我的內容:

創建比您支持的最大屏幕更大的資產。 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版本可能會工作,然後加載較小的設備。