【发布时间】:2015-08-22 09:10:15
【问题描述】:
我在 Unity3d 中制作了一个简单的应用程序,当按下按钮时会生成六个随机不同的数字。生成的数字只是六个 UI 文本,它们是 Canvas 的子级。我的问题是这些文本会根据屏幕尺寸改变它们的位置:
Texts position in full screen mode.
Texts position in normal mode
这是我用过的脚本:
void OnGUI()
{
float rx = Screen.width / 1080.0f;
float ry = Screen.height / 1920.0f;
GUI.matrix = Matrix4x4.TRS(new Vector3(0,0,0),Quaternion.identity,new Vector3(rx,ry,1));
GUI.skin = GameSkin;
if (GUI.Button (GenerateRect, "GENERATE"))
GenerateNumbers ();
}
private void GenerateNumbers()
{
int n;
for(int i = 1;i<=6;i++)
{
n = UnityEngine.Random.Range (1, 100);
while(nr.Contains(n)) /this while loop ensure that the numbers are different
n = UnityEngine.Random.Range (1, 100);
nr.Add (n); // here nr is a list<int> that contains the numbers.
}
Nr1.text = nr[0].ToString();
Nr2.text = nr[1].ToString();
Nr3.text = nr[2].ToString();
Nr4.text = nr[3].ToString();
Nr5.text = nr[4].ToString();
Nr6.text = nr[5].ToString();
nr.Clear();
}
StartCoroutine ("ShowNumbers"); //the ShowNumbers coroutine show the numbers.
}
我正在使用 Unity 4.6(测试版) 附言抱歉英语不好,我来自罗马尼亚。
【问题讨论】:
-
我认为,您需要根据屏幕大小从脚本中设置所有Nrs的位置。
-
我该如何设置位置?是否有内置的适当性可以让我调整文本的位置?
-
如果它们是场景中的游戏对象,我认为它们应该具有变换。在那种情况下
transform.postion = new Vector3(1.0f, 2.0f, 3.0f);。或者您可以使用 GUI.Box 完全从脚本创建文本。 -
感谢您的帮助:D
标签: user-interface unity3d resolution