打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【Unity3d】使GUI适应屏幕分辨率
userphoto

2014.01.17

关注

用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的位置和大小都按照比例缩放了  很简单用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的位置和大小都按照比例缩放了  很简单

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UNITY 易错点1定义变量赋值不能引入其他变量
unity 捕捉屏幕的触控
让网页适应不同分辨率
Unity3D 客户端版程序全屏和窗口化的一个坑
如何创建你的第一个iPhone应用程序
Unity3D-深入剖析NGUI的游戏UI架构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服