1 回答
TA贡献1827条经验 获得超8个赞
这是一个简单的。我初始化了 mainStage() 并且没有向它传递视口。因此 LibGdx 创建了自己的默认视口。当我查看 LibGdx 中 Stage() 类构造函数的源代码时,我发现默认的 Viewport 是一个设置为 Gdx.graphics.getWidth()、Gdx.graphics.getHeight() 的 ScalingViewport,这会读取每个设备的宽度/高度并以不同的方式缩放它:
/** Creates a stage with a {@link ScalingViewport} set to {@link
Scaling#stretch}. The stage will use its own {@link Batch}
* which will be disposed when the stage is disposed. */
public Stage () {
this(new ScalingViewport(Scaling.stretch, Gdx.graphics.getWidth(),
Gdx.graphics.getHeight(), new OrthographicCamera()), new SpriteBatch());
ownsBatch = true;
}
因此,为了解决该问题,我更改了以下代码,而不是:
mainStage = new Stage();
我将代码更改为,以便每个设备都会缩放到相同的宽度/高度:
mainStage = new Stage(new StretchViewport(1024,1024));
此更改基本上将视口设置为 1024x1024 像素,现在可以在我的 PC、Galaxy S9+/其他设备上正确缩放。
添加回答
举报