1、定义:NGUI是严格遵循KISS原则并用C#编写的Unity插件,
提供强大的UI系统和事件通知框架,
它是开源的,代码写得很好,值得去研究学习、模仿
2、与GUI、UGUI的区别
它们都实现了在Unity中制作二维UI界面的功能;
GUI、UGUI是unity内置的绘制界面工具;
UGUI在unity4.6以后才有,以后很有机会替代NGUI;
GUI的成像原理是基于表层的,所以执行效率非常的低,并且没有提供复杂的UI的接口;
而NGUI 通过摄像机直直的照射在一个平面中,在平面之上再去绘制自己的UI,所以它的执行效率会非常高
3、最佳学习方法:实践 + “看源代码(详)” or “看API文档(略)”
4、环境搭配
把NGUI文件夹复制到Assets目录下,或Import Package->Custom Package->ngui_free.unitypackage;
等下刷新,菜单栏上就多了NGUI选项,可以使用了;
5、它有5个目录,分别针对不同功能:
/Editor: “编辑器”,实现了菜单NGUI的功能,可以研究其代码,例如UIAtlasMaker.cs制作图集
/Interaction:“交互类型”控件,例如UIButton
/UI: “显示类型”控件,例如UILabel
/Internal: “工具库”,封装了很多常用工具,例如NGUITools.FindChildGameObject()
/Tweening: ”渐变操作库“,封装了很多渐变操作的接口,例如TweenPosition.cs用于位置的渐变
6、事件响应方式
本质:BoxCollider监听触摸事件,并广播给同GO上的其它组件,组件执行对应的On***()方法,
On***()方法是MonoBehavior里的,所有继承它的组件都可以用,只是Unity不告诉你;
有哪些On***()可参考NGUI的UIEventListener.cs;
方1(最优&简单&强大):BoxCollider + 组件脚本(例如UIEventListener)
只要把逻辑放到脚本的On***()方法里,就会被执行;
例如:UIEventListener.Get(**Go).onClick = ButtonClick;
方2:UIButton:BoxCollider+UIButton;
可实现最好的按钮效果,例如按下、点击、无效时的表现效果;
初始化UIButton/Notify响应事件的2种方法:
1)EventDelegate.Add(btn.onClick, Handler);
2)手动创建一个Go,把脚本挂上去;把GO挂到UIButton/Notify,
就可以选择该Go上对应脚本的方法作为相应函数
方3:使用UIButtonMessage:BoxCollider+UIButtonMessage;UIButtonMessage组件的参数设置:
Target:接收按钮消息的游戏对象。Function Name:接收按钮消息的方法,拥有这个方法的脚本
必须绑定在上面Target对象身上,而且Target对象上所有脚本的该方法都会被执行。Trigger:触发
的事件,OnClick显然是一次点击。Include Children :是否让该对象的所有子对象也发送这个点击事件。
7、研究各个控件脚本
[控件的最佳学习方法:花1,2个小时看源代码,配合实践]
1)UICamera
2)UIWidget
3)UIAnchor自适应组件
它可以设置一个锚点,然后规定其所在GO与锚点的相对位置不变。
设置Anchors的Type为Unified,然后在Target中选定锚点对象,接着进行适配。
4)UISprite
九宫格图片:作用:节约图片资源
步骤:Type为Sliced,给图集里的图片切九宫格
5)UILabel
6)UIScrollView
7)Tween动画
=================================================================