2015-12-28 44 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!"));