C# 可扩展的GUI框/标签

C# 可扩展的GUI框/标签,c#,unity3d,C#,Unity3d,我的GUI框和标签由坐标设置。我将如何设置它们在构建时随分辨率和屏幕大小进行缩放。第一条IF语句显示在屏幕左上角的GUI上,然后在右上角显示下一条IF语句!代码示例将非常有用 public void OnGUI() { if ((isClicked) && (cdrwModel)) { GUI.contentColor = Color.white; GUI.Label(new Rect(5, 5, 400, 400), "<c

我的GUI框和标签由坐标设置。我将如何设置它们在构建时随分辨率和屏幕大小进行缩放。第一条IF语句显示在屏幕左上角的GUI上,然后在右上角显示下一条IF语句!代码示例将非常有用

public void OnGUI()
{
    if ((isClicked) && (cdrwModel))
    {
        GUI.contentColor = Color.white;
        GUI.Label(new Rect(5, 5, 400, 400), "<color=cyan><size=30>This is the </size></color>" + "<color=cyan><size=30>" + this.cdrw + "</size></color>");
        GUI.Label(new Rect(15, 35, 400, 400), "Press <TAB> for more information");
        if (showGui) 
        {
            GUI.contentColor = Color.white;
            GUI.Box(new Rect(1000, 5, 400, 400), "What You Should Know");
            GUI.Label(new Rect(1135, 5, 400, 400), "___________________");
            GUI.Label(new Rect(1145, 23, 400, 400), "<color=cyan><size=20>The </size></color>" + "<color=cyan><size=20>" + this.cdrw + "</size></color>");    
            foreach (var file in _puzzlesFile)
            {
                GUI.contentColor = Color.white;
                GUI.Label(new Rect(1000, 50, 400, 400), file);
            }  
        }
    }
}
public void OnGUI()
{
如果((单击)和&(cdrwModel))
{
GUI.contentColor=Color.white;
Label(新的Rect(5,5400400),“这是”+“”+This.cdrw+”;
标签(新的Rect(15,35,400,400),“按以获取更多信息”);
if(showGui)
{
GUI.contentColor=Color.white;
Box(新的Rect(1000,5400400),“您应该知道什么”);
标签(新的Rect(1135,5400400),“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”);
Label(新的Rect(114523400400),“The”+“”+this.cdrw+”;
foreach(文件中的var文件)
{
GUI.contentColor=Color.white;
Label(新的Rect(1000,50,400,400),文件);
}  
}
}
}

您可以使用Screen类获取当前Screen.width和Screen.height,并创建一些内容,以便在GUI坐标发生变化时重新计算。如果您的游戏相机不使用整个屏幕,您可以使用camera.current.pixelWidth/pixelHeight来执行相同的操作


如果您想要一个响应性强的UI,您应该避免使用坐标,并使用GUILayout而不是GUI类来声明您的组件,这样可以更好、更容易地进行调整,而无需进行大量手工计算将您的性能发挥到极致。

只需使用Screen.width表示GUI的宽度和x位置,Screen.height表示GUI的高度和y位置。 例如:,对于1024:640的屏幕资源

GUI.Box(new Rect(Screen.width/10, Screen.height/10, Screen.width/3, Screen.height/5), "What You Should Know");
将创建一个与相同的Gui框

GUI.Box(new Rect(102.4f, 64, 341.3f, 128), "What You Should Know");
但第一个将是响应性的