我通过Phaser.io创建一个简单的游戏 如何在不同的屏幕上正确显示?
当我使用它时:
var w = window.innerWidth * window.devicePixelRatio,
h = window.innerHeight * window.devicePixelRatio;
var avaProfile = game.add.image(w/1.66, h/6.3, 'avaProfile');
avaProfile.fixedToCamera = true;
发生类似这样的事情:
我甚至无法想象如何让所有元素都具有自适应性
答案 0 :(得分:2)
首先,如果你想根据游戏大小定位你的按钮,你应该使用更可靠的game.width / game.height。
现在,如果你想根据屏幕尺寸调整按钮的位置,那就没有神奇的解决方案了。这是一篇关于该主题的通用文章。您应该决定从哪个原点定位每个UI元素,无论是屏幕角落,屏幕中心,游戏对象等,并预测如果分辨率发生变化,情况会如何。
例如,如果您想在屏幕中央放置一个方形弹出窗口,则可以执行以下操作:
var popup = game.add.sprite(game.width/2, game.height/2, 'popup');
popup.width = 400;
popup.height = 400;
popup.anchor.set(0.5, 0.5);
现在给它一个标题,你可能想根据弹出窗口定位它:
var text = game.add.sprite(popup.x, popup.y + 10, 'Hello world');
text.anchor.set(0.5, 0);
等。没有任何一个解决方案适合所有人,但要明确什么使用什么作为起源,并希望你在调整屏幕大小时不会有惊喜。