文本独立于 Unity 中的屏幕分辨率?

Text independent of screen resolution in Unity?

我有以下取决于用户显示器分辨率的代码:

void OnGUI()
{
    GUI.Label(new Rect(432, 525, 9000, 9000), ("Hello!"));
}

当然,文本的位置在不同分辨率的设备中也会发生变化。如何在 Unity 中使文本独立于屏幕分辨率?

我有解决此问题的方法。想法是以百分比而不是硬编码坐标来分配位置。

  1. 首先找出您的基本分辨率,将在此基础上进行进一步的工作 基于。打印 Screen.widthScreen.height。在我的例子中是 428 x 321
  2. 找出当前位置的百分比 解析度。如果我考虑 GUI.Label(new Rect(50, 50, 300, 300), ("Hello!"));,那么它将是 50.0f/428.0f 宽度百分比并且 50.0f/321.0f 身高百分比。
  3. 现在分配位置w.r.t。 这些百分比。比如,GUI.Label(new Rect((50.0f/428.0f) * Screen.width, (50.0f/321.0f) * Screen.height, 300, 300), ("Hello!"));

考虑使用 Unity 的新 GUI 系统。这允许您在编辑器中设计 UI。您可以以 screen-resolution 独立的方式将文本标签锚定到屏幕,并且可以配置字体大小以自动适应该文本标签内可用的 space。