可伸缩的GUI框/标签

本文关键字:标签 GUI 可伸缩 | 更新日期: 2023-09-27 18:11:45

我的GUI框和标签是由坐标设置的。当它们离开屏幕时,我该如何设置它们以适应分辨率和屏幕大小。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);
            }  
        }
    }
}

可伸缩的GUI框/标签

您可以使用Screen类来获取当前Screen。宽度和屏幕。高度,并创建一些东西来重新计算GUI坐标时,它的变化。如果你的游戏摄像机没有使用整个屏幕,你可以使用camera .current。pixelWidth/pixelHeight

如果你想要一个响应式UI,你应该避免使用坐标并使用GUILayout而不是GUI类来声明你的组件,这是一种更好和更容易的方式来调整,而不需要大量的手工计算,可以(并且可能会)破坏你的性能。

直接使用Screen。宽度为GUI和屏幕的宽度和x位置。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");

但是第一个会有响应