3

我正在使用 libgdx 来开发游戏,但刚刚发现我将如何为各种屏幕尺寸实现它?我想出了如何定位不同尺寸和分辨率的图像,但我们如何让精灵支持不同的屏幕尺寸?我在 320x480 上的背景很好,但在 480 x 800 上占据了很小的位置,如何实现它在所有屏幕上的工作?

4

4 回答 4

5

你有多种选择,取决于你喜欢做什么,

一个。您可以使用一组按比例缩小的 HQ 精灵以适合每个屏幕,例如;

在调整大小()

width = arg0;
height = arg1;

然后在你的 render()

batch.draw(textureRegion, -width/2, -height/2, width, height);

将在整个屏幕上绘制一个精灵(假设正交相机以 0,0 为中心)

湾。您可以为不同的分辨率使用不同的精灵集,然后根据视口的尺寸加载一组精灵。

于 2012-01-13T03:46:58.980 回答
3

你可以使用scene2d。在那里你可以通知场景,窗口在应用程序中调整大小

@Override
public void resize(int width, int height) {
    stage.setViewport(width, height, true);
...
}
于 2013-01-15T18:32:21.747 回答
0

将您的屏幕划分为虚拟单位,例如网格 10x10。根据实际屏幕尺寸计算您的虚拟单位。

VIRTUAL_UNIT_WIDTH = Gdx.graphics.getWidth()/10;
VIRTUAL_UNIT_HEIGHT = Gdx.graphics.getHeight()/10;

并通过这些虚拟单位设置您的精灵大小,并在调用 spriteBatch.draw(); 时使用虚拟单位;

像这样,您将能够通过各种屏幕分辨率保持游戏的相同纵横比。

希望这能给你一个想法。

于 2014-07-18T21:36:18.670 回答
0

我正在使用下面的方法,它适用于几乎所有具有轻微缩放问题的屏幕尺寸。

我总是使用屏幕尺寸为 1920.0x1080.0 的图形图像

ScreenViewport screenViewport=new ScreenViewport(camera);
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight()));
stage = new Stage(screenViewport);

@Override
public void resize (int width, int height) {
    ScreenViewport screenViewport= (ScreenViewport) stage.getViewport();
    screenViewport.setUnitsPerPixel(Math.min(1920.0f/width,1080.0f/height));
    screenViewport.update(width,height,false);
}

在这里,您可以从 Math.min() 或 Math.max() 设置您的方法。

这将导致您的相机视口大小接近 1920.0*1080.0

Device screen-size Math.max()      Math.max() 
800.0x480.0        1800.0x1080.0   1920.0x1152.0
1920.0x1080.0      1920.0x1080.0   1920.0x1080.0
2048.0x1440.0      1536.0x1080.0   1920.0x1350.0

注意:始终使用 camera.viewportWidth 和 camera.viewportHeight 设置游戏 UI 屏幕的位置。

于 2017-07-19T07:33:45.310 回答