libgdx 自适应分辨率
Android的碎片化始终受到开发者们的抱怨(ios如今也出现了相同的问题),各种分辨率,各种屏幕大小给开发测试带来了很大的困难。尤其是个人开发者,由于精力有限, 根本没法每个机型都测试一遍。刚开始使用libgdx,我针对各个分辨率都设定了一套坐标,那个痛苦啊。。。后来发现libgdx本身可以自适应分辨率,太傻叉了自己。 虽然可以自适应分辨率,但是是通过伸缩调整的,所以有些分辨率下画面会显得走
发现使用如下的适配,会出现很多问题,这边依据代码,重新设计了下适配:
其实使用正交摄像头即可解决此问题:
这里使用320 560 来做为开发分辨率,适配当前屏幕。
camera = new OrthographicCamera(320, 560); camera.position.set(320 / 2, 560 / 2, 0);
在 render 接口里面使用:
camera.update(); Batch.setProjectionMatrix(camera.combined);
即可完成了。
为何下面的方式会出错,我们看下源码就会发现缩放时比率有些问题,具体大家看代码研究吧。
出错的方式:
Android的碎片化始终受到开发者们的抱怨(ios如今也出现了相同的问题),各种分辨率,各种屏幕大小给开发测试带来了很大的困难。尤其是个人开发者,由于精力有限,
根本没法每个机型都测试一遍。刚开始使用libgdx,我针对各个分辨率都设定了一套坐标,那个痛苦啊。。。后来发现libgdx本身可以自适应分辨率,太傻叉了自己。
虽然可以自适应分辨率,但是是通过伸缩调整的,所以有些分辨率下画面会显得走形,但比起一个个去调整就将就了吧。我一般使用的游戏框架为
看一下stage的构造方法
public Stage(float width,float height,boolean stretch)
width视图的宽height 视图的高
stretch是否拉伸视图至真实分辨率
我一般选择800×480作为基准分辨率
public class MyGame extends Game { MyScreen screen = null; @Override public void create() { //初始化界面,设定标准分辨率大小 screen = new MyScreen(800, 480); setScreen(screen); } }
所有的stage都以基准分辨率进行设计和排版
public class MyScreen implements Screen { private MyStage stage = null; public MyScreen(int baseW, int baseH) { //true 为自适应分辨率 stage = new MyStage(baseW, baseH, true); } @Override public void render(float arg0) { stage.draw(); } ...... }
更多推荐





所有评论(0)