[英]How can I code my game to work on every resolution of Android devices? (with Unity)
我有一个游戏,我在Unity中以480x320的分辨率(我在构建设置中设置了它)。 但我想为每个Android设备发布我的游戏,每个分辨率。 我怎么能这样做,告诉Unity将我的游戏扩展到设备的分辨率? 有可能吗?
提前致谢!
你的问题的答案在很大程度上取决于你如何实现游戏。 如果你使用GUI纹理创建它,那么它在很大程度上取决于你如何放置/调整对象的大小与屏幕大小,这使得事情有点棘手。
如果您的游戏的大部分是使用对象(例如飞机,立方体等)完成的,那么我通常会选择使用两种方法。
1)第一种方法很容易实现,但并不总是看起来太好。 您只需更改相机的纵横比即可与您设计的游戏相匹配。 所以在你的情况下,既然你在4:3设计了你的游戏,你就会做这样的事情:
Camera.aspect = 4f/3f;
然而,如果有人在16:9的屏幕上玩游戏,游戏最终会变得扭曲和伸展。
2)第二种方法并不容易,需要相当多的工作和计算,但会为您提供更清晰的结果。 如果您使用的是正交相机,请记住一件重要的事情是,无论使用何种屏幕分辨率,正交相机都会将高度保持在设定的高度,并且只会改变宽度。 例如,使用尺寸为10的正交相机,高度将设置为2.考虑到这一点,您需要做的是补偿每个级别内最宽的相机(例如,具有宽背景)或动态更改相机的正交尺寸,直到其宽度与您创建的相匹配。
如果你用立体相机做了3D游戏,屏幕分辨率不应该真正影响它的外观,但我想这取决于游戏,所以需要更多的信息
我的方法是根据设备纵横比改变相机视口。考虑你制作了800x1280的游戏
您可以在任何一个脚本中执行此操作
float xFactor = Screen.width / 800f;
float yFactor = Screen.height / 1280f;
Camera.main.rect=new Rect(0,0,1,xFactor/yFactor);
这就像魔法一样
一个简单的方法是考虑你的目标,我的意思是如果你正在为Iphone 5做游戏,那么宽高比是9:16 v或16:9 h。
public float targetRatio = 9f/16f; //The aspect ratio you did for the game.
void Start()
{
Camera cam = GetComponent<Camera>();
cam.aspect = targetRatio;
}
这是我在2D游戏中缩放ortographic相机的脚本
public float screenHeight = 1920f;
public float screenWidth = 1080f;
public float targetAspect = 9f / 16f;
public float orthographicSize;
private Camera mainCamera;
// Use this for initialization
void Start () {
// Initialize variables
mainCamera = Camera.main;
orthographicSize = mainCamera.orthographicSize;
// Calculating ortographic width
float orthoWidth = orthographicSize / screenHeight * screenWidth;
// Setting aspect ration
orthoWidth = orthoWidth / (targetAspect / mainCamera.aspect);
// Setting Size
Camera.main.orthographicSize = (orthoWidth / Screen.width * Screen.height);
}
我假设它是2D而不是3D,这就是我所做的 :
并在主Canvas'唤醒方法上添加此代码段:
var canvasScaler = GetComponent<CanvasScaler>();
var ratio = Screen.height / (float) Screen.width;
var rr = canvasScaler.referenceResolution;
canvasScaler.matchWidthOrHeight = (ratio < rr.x / rr.y) ? 1 : 0;
对于3D对象,您可以使用上述任何答案
对我来说最好的解决方案是使用相交线的定理,这样既不会在侧面产生截止,也不会对游戏视图造成扭曲。 这意味着您必须后退或前进,具体取决于不同的宽高比。
如果您愿意,我在Unity资产商店中拥有一项资产可自动更正相机距离,因此无论您使用哪种手持设备,都不会出现扭曲或中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.