2015-12-28 43 views
2

我有下面的代码依赖于用户的显示器的分辨率:独立于Unity中屏幕分辨率的文本?

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

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

回答

2

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

+0

在新的GUI系统上,我的文本未正确调整。这就是为什么我诉诸我的问题中列出的代码。检查[this](http://i.imgur.com/RAXrhpu.gif?1)。我也问过关于这个问题[这里](http://stackoverflow.com/questions/34500532/text-not-adjusting-properly-on-canvas) – FSD

+0

看到我的评论和答案。 –

1

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

  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. 这些百分比。 Like,GUI.Label(new Rect((50.0f/428.0f) * Screen.width, (50.0f/321.0f) * Screen.height, 300, 300), ("Hello!"));