将Unity游戏移植到Android时解决的问题

所以,我在Unity3D中首次向A​​ndroid移植了一款游戏。 而且我遇到了一些问题。 我目前的问题是分辨率似乎不是正确的,它切断了屏幕的边缘,我的滚动停止滚动屏幕左/右不再是在正确的地方。

在做了一些研究之后,很多人都说你需要让独立游戏“Resolution Independent”能够在所有Android / Iphone / Ipad上运行。 这是真的? 如果是这样,我该如何去做呢? 如果没有,我该如何帮助解决这个问题,所以当我移植到移动设备时,它看起来是正确的?

编辑:我仍然没有真正有我所需要的,即使使用下面列出的代码和技巧,解决scheme仍然无法正常工作。 我需要一些方法来根据设备调整分辨率。 由于某些原因,当我尝试使用Mungoid的代码检索设备的分辨率时,它返回0x0

Android遇到的问题是每个不同的设备都有自己的屏幕大小,分辨率和像素密度。 如果你想让你的游戏在所有设备上都看起来一模一样,那么你需要做很多工作,并且可能永远不会对结果感到满意。 游戏将在宽屏显示器上显示,或在非宽屏显示器上压缩。 我建议你决定什么是真正重要的,让其他事情稍微滑动一下。

如果没有任何关于游戏的画面和知识,我们都可以推测解决scheme,但是我们没有具体的方向来给你提供具体的建议。

在Unity中,您可以使用Screen类访问当前屏幕的尺寸: Screen.heightScreen.height (以及其他属性)。 然后,您可以改变相机的宽高比,根据屏幕尺寸和您对应该看到的内容的个人期望,更改不同尺寸屏幕上可见的内容。

如果您需要确保任何HUD显示都已正确缩放,则可以通过在每个OnGUI()函数中根据屏幕尺寸更改GUI变换matrix来实现。 我之前通过制作这个简单的脚本,并将其附加到任何呈现的GUI元素,我想要缩放:

 //GUI values in code are assigned based on an 800x600 screen private var nativeWidth : float = 800.0f; private var nativeHeight : float = 600.0f; private var guiMatrix : Matrix4x4; function Start () { var scale : Vector3 = Vector3(Screen.width / nativeWidth, Screen.height / nativeHeight, 1.0f); guiMatrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, scale); } function GetGUIMatrix() : Matrix4x4 { return guiMatrix; } 

然后,在实际的OnGUI()函数中,我立即设置了变换matrix:

 function OnGUI() { GUI.matrix = guiScale.GetGUIMatrix(); /* Everything Else */ } 

你可以尝试像下面这样的应用。 我猜想一个移动设备应该只返回一个分辨率。

 function Start() { var resolutions : Resolution[] = Screen.resolutions; // Print the resolutions for (var res in resolutions) { print(res.width + "x" + res.height); } // Switch to the lowest supported fullscreen resolution Screen.SetResolution (resolutions[0].width, resolutions[0].height, true); }; 

也可以在这里看看关于屏幕的更多信息统一http://unity3d.com/support/documentation/ScriptReference/Screen.html