GUI通常情況下用來制作遊戲的菜單界面和遊戲運作時的工具欄等,不同型号的手機的螢幕分辨率往往不同,這樣我們就會遇到自适應螢幕這個問題,下面我們就來說一下解決辦法。
首先我們來看談一下實作原理,我們假設一個标準螢幕分辨率,例如1024 X 768,我們以此來确定目前GUI空間控件的位置和大小,控件在1024 X 768分辨率下的位置和大小乘以螢幕的縮放系數即得控件在目前螢幕下的位置和大小。縮放系數即為目前螢幕寬高除以标準螢幕寬高1024和768.
好了,讓我們用一個例子實作GUI适應螢幕分辨率,我們在螢幕的左上角和右下角定義兩個菜單項。
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
//定義菜單項貼圖
public Texture start;
public Texture exit;
//定義标準螢幕分辨率
public float m_fScreenWidth = 1024;
public float m_fScreenHeight = 768;
//定義縮放系數
public float m_fScaleWidth;
public float m_fScaleHeight;
void Start () {
//計算縮放系數
m_fScaleWidth = (float)Screen.width / m_fScreenWidth;
m_fScaleHeight = (float)Screen.height / m_fScreenHeight;
}
void OnGUI()
{
//繪制菜單
GUI.Button(new Rect(10 * m_fScaleWidth, 10 * m_fScaleHeight, 200 * m_fScaleWidth, 50 * m_fScaleHeight), start);
GUI.Button(new Rect(814 * m_fScaleWidth,708 * m_fScaleHeight, 200 * m_fScaleWidth, 50 * m_fScaleHeight), exit);
}
}
運作結果如下圖所示:
分辨率640 X 480:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc5WOHJWasdVWyZlbhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNzcTNxITNwIDNxgDMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
分辨率1024 X 600:
好了,簡單的自适應螢幕就實作了,請大家導出.exe檔案後檢視效果。相信大家還會有更好的辦法,其實GUI在以後的實際開發中基本上不會使用,而是使用相關的插件,如NGUI等,NGUI更為友善,而且帶有螢幕自适應功能,這個在以後的學習中再進行讨論。
最後附上項目工程的下載下傳位址:點此下載下傳