如何编写我的游戏以处理Android设备的每个分辨率?(使用Unity)

Zwi*_*bel 11 android screen-resolution unity-game-engine

我有一个游戏,我在Unity中以480x320的分辨率(我在构建设置中设置了它).但我想为每个Android设备发布我的游戏,每个分辨率.我怎么能这样做,告诉Unity将我的游戏扩展到设备的分辨率?有可能吗?

提前致谢!

Ste*_*lls 16

你的问题的答案在很大程度上取决于你如何实现游戏.如果你使用GUI纹理创建它,那么它在很大程度上取决于你如何放置/调整对象的大小与屏幕大小,这使得事情有点棘手.

如果您的游戏的大部分是使用对象(例如飞机,立方体等)完成的,那么我通常会选择使用两种方法.

1)第一种方法很容易实现,但并不总是看起来太好.您只需更改相机的纵横比即可与您设计的游戏相匹配.所以在你的情况下,既然你在4:3设计了你的游戏,你就会做这样的事情:

Camera.aspect = 4f/3f;
Run Code Online (Sandbox Code Playgroud)

然而,如果有人在16:9的屏幕上玩游戏,游戏最终会变得扭曲和伸展.

2)第二种方法并不容易,需要相当多的工作和计算,但会为您提供更清晰的结果.如果您使用的是正交相机,请记住一件重要的事情是,无论使用何种屏幕分辨率,正交相机都会将高度保持在设定的高度,并且只会改变宽度.例如,使用尺寸为10的正交相机,高度将设置为2.考虑到这一点,您需要做的是补偿每个级别内最宽的相机(例如,具有宽背景)或动态更改相机的正交尺寸,直到其宽度与您创建的相匹配.

如果你用立体相机做了3D游戏,屏幕分辨率不应该真正影响它的外观,但我想这取决于游戏,所以需要更多的信息


Roh*_*hit 9

我的方法是根据设备纵横比改变相机视口.考虑你制作了800x1280的游戏

您可以在任何一个脚本中执行此操作

float xFactor = Screen.width / 800f;
float yFactor = Screen.height  / 1280f;


Camera.main.rect=new Rect(0,0,1,xFactor/yFactor);
Run Code Online (Sandbox Code Playgroud)

这就像魔法一样