用Unity開發移動平台的遊戲 不可避免的會遇到螢幕解析度

來源:互聯網
上載者:User

標籤: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或者其他的解析度,便會發現位置和大小都不正確了
  1. function OnGUI ()
  2. {
  3.      if (GUI.Button(Rect(Screen.width - 200, Screen.height - 100, 64, 64), "Start"))
  4.      {
  5.        // dosomething
  6.      }
  7. }
  8. 複製代碼
複製代碼
於是我們按比例去移動和縮放UI
  1. // original screen size
  2. var m_fScreenWidth  : float = 480;
  3. var m_fScreenHeight : float = 854;

  4. // scale factor
  5. var m_fScaleWidth  : float;
  6. var m_fScaleHeight : float;

  7. function Awake ()
  8. {
  9.      m_fScaleWidth = parseFloat(Screen.width)/m_fScreenWidth;
  10.      m_fScaleHeight = parseFloat(Screen.height)/m_fScreenHeight;      
  11. }

  12. function OnGUI ()
  13. {
  14.      if (GUI.Button(Rect(Screen.width - 200 * m_fScaleWidth , Screen.height - 100 * m_fScaleHeight , 64 * m_fScaleWidth , 64 * m_fScaleHeight ), "Start"))
  15.      {
  16.        // dosomething
  17.      }
  18. }
  19. 複製代碼
複製代碼
若UI控制項較多的時候,對每一個都去控制大小顯然沒必要則使用矩陣實現
  1. GUI.matrix = Matrix4x4.TRS (Vector3(0, 0, 0), Quaternion.identity, Vector3 (m_fScaleWidth, m_fScaleHeight, 1));
複製代碼這樣就將button的位置和大小都按照比例縮放了  很簡單

聲明:此篇文檔時來自於【狗刨學習網】社區,是網友自行發布的Unity3D學習文章,如果有什麼內容侵犯了你的相關權益,請與官方溝通,我們會即時處理。
更多精彩內容:www.gopedu.com

用Unity開發移動平台的遊戲 不可避免的會遇到螢幕解析度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.