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:
分辨率1024 X 600:
好了,简单的自适应屏幕就实现了,请大家导出.exe文件后查看效果。相信大家还会有更好的办法,其实GUI在以后的实际开发中基本上不会使用,而是使用相关的插件,如NGUI等,NGUI更为方便,而且带有屏幕自适应功能,这个在以后的学习中再进行讨论。
最后附上项目工程的下载地址:点此下载