缩放不同分辨率的GUI元素

时间:2014-04-25 07:41:01

标签: user-interface unity3d

我试图在Unity中设置一个适用于所有设备的GUI菜单。所以我开始设置一个分辨率为1024 * 600.

看起来没问题,所以我尝试添加一个缩放器,使其在所有其余部分看起来没问题。

获取缩放器的代码示例:

float originalWidth = 1024;
float originalHeight = 600;     
Vector3 scale;
scale.x = Screen.width/originalWidth; 
scale.y = Screen.height/originalHeight; 
scale.z = 1;

然后我按照这样的比例调整每个元素的大小:

rect = new Rect(width/2 - 65 * scale.x, height/2 - 50 * scale.y, 130 * scale.x, 65 * scale.y);

但它看起来并不一样。 我也尝试过这样:

rect = new Rect((width/2-65) * scale.x, (height/2-50) * scale.y, 130 * scale.x, 65 * scale.y);

但它看起来更加错误。

所以要明确我希望我的元素在屏幕中间有一些偏移并且在所有设备上看起来都一样。

最大的问题是2个元素需要完美对齐。

2 个答案:

答案 0 :(得分:1)

您可以使用原生GUI分辨率设置GUI矩阵......

float rx = Screen.width / 1024.0f;
float ry = Screen.height / 600.0f;  
GUI.matrix = Matrix4x4.TRS(new Vector3(0, 0, 0), Quaternion.identity, new Vector3(rx, ry, 1));

http://docs.unity3d.com/Documentation/ScriptReference/Matrix4x4.TRS.html

答案 1 :(得分:0)

使用屏幕百分比作为GUI元素的位置和大小:

GUI.Box(new Rect(Screen.width*0.40f, Screen.height*0.4f, Screen.width*0.20f, Screen.height*0.20f));