关于精灵大小的Android libGDX

时间:2015-07-17 11:58:42

标签: android libgdx screen-size

我在Android中使用libGDX制作游戏,我对精灵的大小有一些疑问。我想在景观场景中使用相同的精灵作为屏幕背景,我希望这个背景与每个16:9设备完美匹配。

我的问题是我不知道什么是最佳尺寸那张照片,因为如果我制作1920x1080的图片,它会占用很多内存并损坏游戏性能,如果我制作的图像很少,那么在某些设备上看起来会很糟糕。 这种情况下的做法是什么?

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

以下是我将如何应对这种情况。我将选择我的相机尺寸16:9也许1024 * 576(或任何适合你的) 另外为了节省内存使用.jpg格式而不是.png,它会节省大量空间

在Libgdx中,只要您使用相机或正交相机,就不必担心不同的设备尺寸。即使在非16:9设备上进行拉伸

,我也会确保屏幕适合

这是一些代码段

public class LoadScreen extends Screen
{

   Game game;
   SpriteBatch batcher;
   OrthographicCamera cam;
   AssetManager manager;
   public static BitmapFont font;
   private String dir="data/";

public LoadScreen(Game game,SpriteBatch batcher)
 {
    super(game);
    this.game=game;
    this.batcher=batcher;
    cam = new OrthographicCamera(GameConstants.CAMERA_WIDTH, GameConstants.CAMERA_HEIGHT);
    cam.position.set(GameConstants.CAMERA_WIDTH / 2, GameConstants.CAMERA_HEIGHT / 2,0);
    manager=new AssetManager();
    font = new BitmapFont(Gdx.files.internal("data/billy.fnt"), Gdx.files.internal("data/billy.png"), false);
    loadData();
}
private void loadData()
{
    manager.load(dir+"monkey",TextureAtlas.class);
    manager.load(dir+"levelBg.jpg",Texture.class);
    manager.load(dir+"gamescreen.jpg",Texture.class);
    manager.load(dir+"apple.png",Texture.class);
}
}

在资产类

公共类资产 {

public static AssetManager manager;
public static TextureAtlas atlas;
private static String dir = "data/";
public static Sprite levelBg;

public static void load(AssetManager manager)
{
    Assets.manager = manager;
    loadAtlas();
    loadTextures();
    loadImageFromAtlas();
    loadFont();
}
private static void loadAtlas()
{
    atlas = manager.get(dir + "monkey", TextureAtlas.class);
}

private static void loadTextures()
{
    levelBg = new Sprite(manager.get(dir + "levelBg.jpg", Texture.class));
    gameBg = new Sprite(manager.get(dir + "gamescreen.jpg", Texture.class));
    apple = new Sprite(manager.get(dir + "apple.png", Texture.class));
}
}

P.S你可以像你想要的那样略微不同但这会节省大量内存,就好像你将精灵表作为.jpg一样,图像的透明度将会丢失