NGUI的工作总结(一)

来源:互联网 发布:大数据底层开发工程师 编辑:程序博客网 时间:2024/04/29 11:21

NGUI一直是unity store中销量前三位中的插件啊,另外两个分别是2dtoolkit和playermaker

三个好基友一直并肩作战啊,已经好久了,他们三个都一直排在前三。。。。。。


NGUI的最新版本是2.63,其中的组件,基本可以完成所有的UI相关的工作了,而且好多组件都是傻瓜式使用啊




一.ngui的dragAblePanel,可拖拽的panel

具体而详细的教程可以去看雨松大神的NGUI教程

http://www.xuanyusong.com/archives/category/unity/ngui

总结一下用法,备录一下,以防忘记:需要拖拽移动菜单效果的panel需要添加UIDragable Panel组件,其中dragEffect是拖拽的效果,momentum and spring是带有弹性效果的,具体来说,就是拖拽到头之后,可以继续拖拽,并且被弹回来,该选项将会在play运行后,为改物体添加一个panel spring的脚本。scale是需要拖拽的轴的方向和速度,x=1表示在水平方向拖拽,并且最大的拖拽速度是panel的长度1左右(?速度值待定),y则是垂直方向的拖拽。需要注意的一点是如果想要让panel部分显示,超出部分隐藏,则需要更改panel组件的cliping模式,hard clip或者soft clip即可

补充:场景中还需要一个dragCollider ,即一个带有碰撞组件的物体,添加UIDragPanelContents组件,来作为接受触摸信息和点击信息的接受体



二.NGUI的各级别组件之间的相互遮挡和depth显示

ngui常出现这么一个问题,就是你的sprite的depth比较高,但是就是不能显示在前端,这时候只能手动调节z轴的位置了,然后会陷入一个恶性循环,ui组件们的z值越来越大

这个问题的解决方案应该是:


1.引起混乱大部分时候是因为使用了不同的atlas,或者是NGUI元素在不同的panel上。

2.相同panel,相同atlas的话,depth是可以正常工作的

3.相同panel中的不同atlas的话,就需要手动调节z轴的位置了

4.不同panel的话,调节宿主panel的z值可以调节显示顺序,负值且越小越接近相机。例如:把背景图放在一个单独的panel中。然后调节这个panel位置,让其靠后,这样就可以避免出现其他元素被背景遮挡住的情况了

5.有时候,不同panel不同atlas的不同元素间的位置关系可能会及其混乱,调整z值也没办法正常控制显示顺序。可以先别管他了。。。。第二天没准就好了。

6.还有的时候,你在editor里面运行时正常的,但是如果发布到手机上就层次又错了。

7.label的z轴尽量向前,如果无必要的话,不要使用过多的panel,每个panel会消耗一个drawCall,图集也尽量放在一起。


三.UIWindow之间切换

从使用NGUI到现在,我一共接触了3种切换窗口的方法

1.使用active,把当前的窗口active = false;即可,需要一个全局脚本控制几个窗口之间的active与否

2.使用animation,可以用内置动画工具创建动画,也可以用itween来控制动画,但要注意一点,动画的参考坐标系一定要选择localPosition,如果使用itween的,需要将localPosition转化为worldPosition使用即可

3.使用事件中心系统,每个窗口的父物体添加一个事件接收的脚本,按钮触发相应事件,这是比较简单的方法,在接收到符合它的条件的事件消息的时候,怎么操作就随意了


原创粉丝点击