如何使用Unity在Android设备上展示相同部分的游戏,以适应不同的屏幕比例?

5
我从Libgdx引擎转到Unity,并且是一名初学者程序员。我尝试在Unity中为Android和iOS设备制作游戏,但我在纵横比/分辨率缩放方面遇到了问题。在Libgdx中,如果您开发了某些内容,则会提供一个“默认”分辨率,所有内容都将按比例缩放到设备屏幕上,无论其分辨率大小如何,屏幕上不会有任何被裁剪的内容。另一方面,在Unity中,如果我制作游戏,它将裁剪屏幕以适应所选的纵横比,如果您希望在所有可用设备上获得相同的体验,则不是最佳选择。我在互联网上搜索了很长时间,但我没有找到适合我的解决方案。
总之:我想知道是否有Unity(C#)代码可以使我的游戏在具有不同纵横比的所有设备上看起来相同?我正在使用Unity 2D进行开发。如果有人能编写并愿意分享代码,我会非常高兴,因为如果在所有设备上都看起来不同,那就太糟糕了。 我还没有遇到onGUI的问题,因为我还没有为它创建任何菜单或其他内容,只是游戏,但是如果背景不同,人物不在屏幕的同一部分,那就不好了。
1个回答

3

在初始化时,使用Camera.pixelRect来确定设备的高度和宽度,假设相机是全屏的。

存储高度和宽度,然后使用默认设置进行一些计算。例如,默认设置为480x854,pixelRect为800x1280。 因此,宽度差为800f/480f。高度也是同理。

使用差异并将其乘以层次结构顶部的对象。

希望这有所帮助。


如果宽度/高度的差异不相等会怎样?图像不会变形吗? - schumacher574
我的意思是计算宽度和高度的差异。DifferenceInWidth = 800f/480f; DifferenceInHeight = 1280f/854f; 使用这些差异并将其应用于层次结构顶部的游戏对象。 - KennethLJJ
我想我的意思是...如果你有不同的宽高比(例如:设计为4:3,运行在3:2上),这将导致一个方向上的不均匀拉伸。虽然我真的看不到解决这个问题的方法...除非设计UI以适应“空白”或“死区”。 - schumacher574
很遗憾,你是对的,因为移动设备上存在太多不同的宽高比。我能建议的只是分别在相对较大的分辨率上为Android和iOS构建应用程序。目前来说,iOS设备遵循类似的宽高比,所以不会有太大问题。问题更多地出现在Android上。我建议默认使用1280x800的分辨率,并进行缩小处理,这样图片就不会模糊了。 - KennethLJJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接