文本独立于 Unity 中的屏幕分辨率?
Text independent of screen resolution in Unity?
我有以下取决于用户显示器分辨率的代码:
void OnGUI()
{
GUI.Label(new Rect(432, 525, 9000, 9000), ("Hello!"));
}
当然,文本的位置在不同分辨率的设备中也会发生变化。如何在 Unity 中使文本独立于屏幕分辨率?
我有解决此问题的方法。想法是以百分比而不是硬编码坐标来分配位置。
- 首先找出您的基本分辨率,将在此基础上进行进一步的工作
基于。打印
Screen.width
和 Screen.height
。在我的例子中是
428 x 321
。
- 找出当前位置的百分比
解析度。如果我考虑
GUI.Label(new Rect(50, 50, 300, 300),
("Hello!"));
,那么它将是 50.0f/428.0f
宽度百分比并且
50.0f/321.0f
身高百分比。
- 现在分配位置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。
我有以下取决于用户显示器分辨率的代码:
void OnGUI()
{
GUI.Label(new Rect(432, 525, 9000, 9000), ("Hello!"));
}
当然,文本的位置在不同分辨率的设备中也会发生变化。如何在 Unity 中使文本独立于屏幕分辨率?
我有解决此问题的方法。想法是以百分比而不是硬编码坐标来分配位置。
- 首先找出您的基本分辨率,将在此基础上进行进一步的工作
基于。打印
Screen.width
和Screen.height
。在我的例子中是428 x 321
。 - 找出当前位置的百分比
解析度。如果我考虑
GUI.Label(new Rect(50, 50, 300, 300), ("Hello!"));
,那么它将是50.0f/428.0f
宽度百分比并且50.0f/321.0f
身高百分比。 - 现在分配位置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。