NGUI学习笔记3-功能脚本

  上篇笔记写到,NGUI自定义的基础窗体实际上只有那么有限的几种,那NGUI是怎么实现强大的功能呢,答案就是通过脚本。通过挂接功能脚本,所对应的窗体立即获得响应的功能,相当的方便。那么NGUI怎么挂接脚本呢?一种是直接使用NGUI的attach菜单,另一种是象传统的那样直接把脚本拖到对应的控件上面去。这里建议使用第一种操作,因为这样免除第2种方法还需要设置脚本对象的操作。接下来我们看看NGUI attach菜单里面的脚本。

  首先是collider。这个实际上是unity的组件box collider。没有这个组件,很多事件是不能触发的。比方说放一个button,实际上必须attach collider以及button脚本。所以如果发现控件不能响应某些事件的话,可以检查下collider是否忘记attach了。

  button。Tween Target代表脚本挂接的默认对象。一般从菜单attach的话一般都是当前窗体。注意这个属性是GameObject.所以基本上所有的控件都可以挂接这个脚本。下面的color以及sprites用来设置按钮不同状态下的颜色以及显示的精灵。最重要的是on click。用来设置点击的响应函数。我们完全可以自己写个单独的脚本,然后挂接到这里。

  toggle。单选框/多选框的基本组件。因为这个是针对单个选项的脚本,所有有个组的概念,用于区分不同的选项组。onValueChange可以设置响应函数。

  slider。滑块。这个需要设置3个影响显示的组件。背景,forground,thumb。显然thumb是指滑块本身,而前景 背景中有一个实际上控制了滑块运动的范围,那到底是哪个控制了滑块的运动?我们可以在NGUI示例的场景中修改前景背景的窗体大小来看效果(因为NGUI预制体前景会自动根据背景缩放大小,所以要看效果需要把archor属性置空)。这里直接说结果:前景控制了滑块运动范围,背景置空也不影响滑动的运动。显然,从这里可以看见,如果要自己从头“画”一个正常的滑块,至少需要2个窗体即可(设置前景和滑块)。direction指示滑块的运动方式。onValueChange设置响应函数。

  scrool bar。滑动条。粗看一下大部分属性和slider是相同的。区别在哪里呢?有意思的是NGUI的预制scrool bar根本就没有设置thumb的属性,仅有foreground属性。可以调整foreground窗口大小看效果。可以确定,foreground的原窗体大小、位置限制了滑动的范围。而脚本里面的size这个属性,实现对滑块显示的缩放。(把foreGround设置为一个图片可以看见更准确的效果)。

  process bar。进度条。这个属性也大部分和slider相同。看示例,背景是指显示在最底层的图片,前景是一个设置为tile Type的图片。Thumb设置为一个仅有transform属性的物体,而为了显示效果,其下挂接了个label,用来显示百分比。但有意思的是,即便我们把thumb属性置空,仍然不改变进度条的效果。所以Thumb实际上只是一个辅助的作用。另外那个随着进度条显示的百分比的label,实质上是在onValueChange调用了一个label pullic接口(可以显示一个百分比)。所以本质上,要实现一个进度条,只需要2个窗体。(背景和前景)

  pop up list。下拉框。options 可以输入多个显示的选项。position表示是向上弹出 还是向下弹出。atlas的background设置整个弹出菜单的背景,highlight设置选中的单个菜单项的背景。font设置字体显示属性。onValueChange设置响应函数。可以看见示例里面再次调用了label的public接口setCurrentSelection()。(而这个函数调用了UIPopupList.current.value)

  InputField。输入框。这个脚本要选择一个lable来作为接收输入的窗体。同时可以设置各种状态下字体的颜色以及对输入状态的一些控制。最重要的是有两个回调函数。OnSubmit,OnChange。Onchange只要有输入就会触发,OnSubmit仅在输入完成的时候触发。还有个比较有用的是可以设置按下回车的时候的默认行为。

  KeyBinding。绑定按键。modifier设置组合键。action设置响应的事件。

  keyNavigation。设置按下上下左右时选中的控件。这个和toggle一样,是个需要多个窗体同时挂接才能发挥作用的脚本。

  Play Tween/Animation/Sound。播放动画、声音。其中Tween是一种简单的动画,可以实现对某个参数值的一定时间内动态变化的控制。onFinished设置播放完成后的回调。

  Locallisition。本地化。这个具体是指不同语言之间的本地化。这里给一个链接:http://www.ceeger.com/forum/read.php?tid=4358。我觉得简单点说,这个本地化实质上就是根据不同的语言替换不同的字符串,并不是自身实现语言之间的自动翻译。

  最后要提一下的是,NGUI菜单里面没有包括所有的功能脚本,还有很多比较实用的脚本在Scripts/Interaction里面可以找到。比如说拖拉脚本UIDragObject等。

  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值