我在Android中使用libGDX制作游戏,我对精灵的大小有一些疑问。我想在景观场景中使用相同的精灵作为屏幕背景,我希望这个背景与每个16:9设备完美匹配。
我的问题是我不知道什么是最佳尺寸那张照片,因为如果我制作1920x1080的图片,它会占用很多内存并损坏游戏性能,如果我制作的图像很少,那么在某些设备上看起来会很糟糕。
这种情况下的做法是什么?
感谢您的建议。
答案 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一样,图像的透明度将会丢失