標籤:unity unity3d unity3d培訓 unity3d極致學院 unity3d遊戲開發
歡迎來到unity學習、unity培訓、unity企業培訓教育專區,這裡有很多U3D資源、U3D培訓視頻、U3D教程、U3D常見問題、U3D項目源碼,【狗刨學習網】unity極致學院,致力於打造業內unity3d培訓、學習第一品牌。 用Unity開發移動平台的遊戲 不可避免的會遇到螢幕解析度的問題 不同的解析度上會使得原本正常的UI變得亂七八糟 我們知道 在Unity中可以拿一個plane作為背景 UI則是繪製在離攝像機最近的位置 可以認為是繪製在攝像機上的因此解析度的不同會導致UI的位置和大小出現錯誤 我們完全可以用一個plane去類比button 並將它放在世界空間中 這樣雖然可以解決位置和大小的問題 但是所帶來的問題也一大堆並難於維護因此我們需要根據螢幕的大小去按比例縮放UI假如原本有個按鈕是這樣,並且當前的480x854解析度下沒問題,如果改成600x1024或者其他的解析度,便會發現位置和大小都不正確了
- function OnGUI ()
- {
- if (GUI.Button(Rect(Screen.width - 200, Screen.height - 100, 64, 64), "Start"))
- {
- // dosomething
- }
- }
- 複製代碼
複製代碼 於是我們按比例去移動和縮放UI
- // original screen size
- var m_fScreenWidth : float = 480;
- var m_fScreenHeight : float = 854;
- // scale factor
- var m_fScaleWidth : float;
- var m_fScaleHeight : float;
- function Awake ()
- {
- m_fScaleWidth = parseFloat(Screen.width)/m_fScreenWidth;
- m_fScaleHeight = parseFloat(Screen.height)/m_fScreenHeight;
- }
- function OnGUI ()
- {
- if (GUI.Button(Rect(Screen.width - 200 * m_fScaleWidth , Screen.height - 100 * m_fScaleHeight , 64 * m_fScaleWidth , 64 * m_fScaleHeight ), "Start"))
- {
- // dosomething
- }
- }
- 複製代碼
複製代碼 若UI控制項較多的時候,對每一個都去控制大小顯然沒必要則使用矩陣實現
- GUI.matrix = Matrix4x4.TRS (Vector3(0, 0, 0), Quaternion.identity, Vector3 (m_fScaleWidth, m_fScaleHeight, 1));
複製代碼這樣就將button的位置和大小都按照比例縮放了 很簡單
聲明:此篇文檔時來自於【狗刨學習網】社區,是網友自行發布的Unity3D學習文章,如果有什麼內容侵犯了你的相關權益,請與官方溝通,我們會即時處理。 更多精彩內容:www.gopedu.com |
用Unity開發移動平台的遊戲 不可避免的會遇到螢幕解析度