GUI与GUILayout的区别

GUILayout是什么东西呢?它是游戏界面的布局。从命名中就可以看到这两个东西非常相像,但是在使用过程中两者还是存在一定区别的。

使用GUI绘制控件的时候,需要设置控件的Rect()方法,也就是说需要设定控件的整体显示区域。这样设置的控件非常不灵活,因为它的坐标以及大小已经固定死了,这时如果控件中的内容长度发生改变,就会直接影响展示效果。例如,在界面中绘制一个按钮时,按钮中的显示文本刚好填充在整个按钮当中,如果动态加长文本的显示长度,就会超出按钮的显示范围,使按钮控件变得不伦不类。我们需要制作控件的自适应,所以不能使用Rect()方法固定控件的显示区域,而是需要使用界面布局来制作界面。

使用GUILayout来制作界面,可以很方便地为我们解决上述难题。使用GUI制作界面的时候,需要给每一个控件设定显示区域,如果控件的显示坐标没有计算准确,还会出现控件重叠的情况,而GUILayout无须设定显示区域,系统会自动帮我们计算控件的显示区域,并且保证它们不会重叠。

注意 之前介绍的大部分GUI控件都可以使用GUILayout进行绘制。

下面我们将通过一个实例让读者进一步熟悉GUI与GUILayout之间的区别。本例使用GUI与GUILayout分别制作两个按钮,然后动态修改按钮中的文字,看看这两个按钮有什么不同的变化,具体代码如代码清单3-11所示。

代码清单3-11 Script_03_11.js文件

var addStr : String = "添加测试字符串";
function OnGUI() 
{
    //普通GUI按钮
   if(GUI.Button (Rect (50,50,100,30), addStr))
   {
        addStr +=addStr;
    } 
    //界面布局按钮
   if(GUILayout.Button (addStr))
   {
        addStr +=addStr;
    } 

}

在上述代码中,点击任意按钮,按钮中的文本长度将增加。如图3-16所示,正常情况下两个按钮中的内容与按钮的布局完美适应。

enter image description here

点击按钮来增加文本内容,效果如图3-17所示,显然使用GUILayout绘制的按钮按照字符串长度调整了按钮长度,而使用GUI绘制的按钮未能进行自适应调整。由于按钮中的文字增长,而按钮的长度不变,所以按钮上的文字被挤在了中间。由此可以看出,使用GUI绘制的控件非常不灵活。

enter image description here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值