Android会遇到的一个问题是,每个不同的设备都有自己的屏幕尺寸,分辨率和像素密度。如果您希望自己的游戏在所有设备上看起来都一样,则您需要进行大量工作,并且可能永远不会对结果感到满意。游戏将在宽屏显示器上显示为拉伸状态,或者在非宽屏显示器上显示为压缩状态。我建议您决定什么才是真正重要的,然后让其他任何内容滑动一下。
在没有任何屏幕截图或游戏状态和外观的知识的情况下,我们都可以推测解决方案,但我们没有向您提供具体建议的具体方向。
在Unity中,您可以使用Screen类:Screen.width
和Screen.height
(以及其他属性)访问当前屏幕的尺寸。然后,您可以根据屏幕尺寸和您对可见内容的个人期望,更改Camera的纵横比,以更改在不同尺寸的屏幕上可见的内容。
如果您需要确保正确缩放所有HUD显示,可以通过在每个功能中基于屏幕尺寸更改GUI转换矩阵来实现OnGUI()
。我之前已经做过这个简单的脚本,并将其附加到可以缩放我想要缩放的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()
函数中,我立即设置了转换矩阵:
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}