Helllo,我是libgdx的新手,我需要一些帮助,如果我的桌面启动器分辨率为480x320,精灵占用屏幕的80%,但是如果1280x720,精灵很小,我需要让它在所有解析时看起来都一样我该怎么做呢?对你来说可能很容易,但不是我的,我使用libgdx 1.3.1 这是我的libgdx代码:
SpriteBatch batch;
Texture img;
Sprite mysprite;
@Override
public void create ()
{
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
mysprite = new Sprite(img);
stage = new Stage(new StretchViewport(480, 320));
}
StretchViewport myviewport = new StretchViewport(480, 320);
public void resize(int width, int height)
{
// use true here to center the camera
// that's what you probably want in case of a UI
stage.setViewport(myviewport);
stage.getCamera().position.set(640/2, 480/2, 0);
}
private Stage stage;
@Override
public void render ()
{
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
mysprite.draw(batch);
batch.end();
}
答案 0 :(得分:2)
您已经在使用正确的东西:Viewport
。
有不同的Viewport
类,其中一些支持使用虚拟屏幕大小,这正是您所需要的。
什么是虚拟屏幕尺寸?这是你的代码正在使用的屏幕尺寸,然后按比例放大以匹配真实的分辨率 基本上,您可以使用自己的单位,然后自动放大以匹配像素。
我想在你的情况下有2种可能的Viewport
- 类型:
- StretchViewport
支持虚拟屏幕尺寸并将其缩放以匹配实际屏幕尺寸和真实宽高比。如果实际宽高比与虚拟宽高比不匹配,Sprite
将被拉伸,这可能看起来很奇怪
- FitViewport
与StretchViewport
相同,但会保持宽高比。如果真实宽高比与虚拟宽高比不匹配,则会出现黑色边框。
如何使用它:
首先,您需要创建它:
myViewport = new StretchViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);
然后设置Stage
s Viewport
:
stage = new Stage(myViewport);
在resize
方法中,您需要update
Viewport
:
myViewport.update(width, height);
多数民众赞成。
stage
现在使用Viewport
及其camera
进行渲染。您不需要触摸camera
,除非您需要移动它。
所以你的错误是:
stage = new Stage(new StretchViewport(480, 320));
StretchViewport
。stage.setViewport(myviewport);
stage
update(width, height)
致电Viewport
。