在asset导入NGUI会在unity最上面菜单栏多出NGUI工具栏,点击NGUI--->open--->prefab toolbar会有创建好的一些控件,直接拖到hierarchy中即可使用,注意的是在视图中显示的控件在右侧属性中的脚本必须展开,否则控件不会显示出来而且无法在视图中创建东西,之后再scene中右键可以create许多控件
注意在scene中create必须在hierarchy中选中UI Root才能create
第一个可以选择NGUI或Unity,第二个是选择字体
Atlas是图集,图片的集合,Sprite控件是添加图片,Panel是面板,如果让一个label变成按钮,需要attach一个box collider和UIButton,注意必须先attach一个box collider然后attach才能出来UiButton
在按钮的On Click的属性上Notify是触发那个组件Method是触发该组件上的哪个方法
NGUI---->open------>Atlas Maker打开图集
最右侧选择new,然后在asset选择第一个图片按住shift选择最后一个图片,这样就全选了所有的图片并且添加到了Atlas Maker中,点击Create保存到asset中的Atlas中,
更新图集:在asset的图集右键,NGUI--->open Atlas maker,进行图片的更新
切图SlicedSprite在Sprite属性有个type选择sliced选择edit,设置边界可以把边界切掉
Sprite属性中有个Anchors它是设置上下左右边框距离目标点的距离来保证图片拉伸的缩放,比如在游戏的小地图永远在右上角不会因为图片的缩放而失真,因此小地图的左和右应该距离UI Root右侧保持距离,上和下距离UI Root的上侧保持距离
tween动画:
可以实现透明度颜色旋转等的改变
给一个按钮添加播放声音,add component输入Play Sound有现成脚本
对于文字要想让它几个字几个字慢慢出来,添加这个脚本
比如把人物模型characters放到UI Root,它的大小要放大到640才能在视图中看到,如果设成1是太小看不到的
UGUI总结:
所有物体的父物体必须是画布Canvas,对于画布,它的第一个属性Render Mode有三个选项,
第一个Overlay(覆盖)
表示该物体与画布重叠时,画布会覆盖在物体上面显示
第二个Screen Space Camera,需要拖动一个相机到Render Camera中,Plane Distance表示画布距离该相机的距离是100,物体在这个距离前面那么就呈现出物体覆盖在上面的情况,如果后面就在后面
第三个是世界坐标的,他可以让画布以立体的形式呈现出来,比如画布缩放,倾斜
还有一个属性Sorting Layer,也是层级关系,如果给它设置了层级,那么层级数字大的会覆盖掉层级小的
Canvas Scaler(画布缩放)
其中Screen match Mode如果选择Shrink,那么是屏幕不能留白,图片宁肯超出屏幕
如果选择Expand,表示图片不能超出屏幕
如果要让物体处于可交互的,添加selectable属性即可,可以设置正常物体的颜色,按压物体时颜色
在代码中使用到UI控件记得在脚本的最上面添加using UnityEngine.UI
通过代码的形式将物体移动到上一层级,下一层级:
比如把一个image移动到最底层的做法
1. NGUI与UGUI的区别
1) uGUI的Canvas 有世界坐标和屏幕坐标
2) uGUI的Image可以使用material
3) UGUI通过Mask来裁剪,而NGUI通过Panel的Clip
4) NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层.
5) UGUI 不需要绑定Colliders,UI可以自动拦截事件
6) UGUI的Anchor是相对父对象,没有提供高级选项,个人感觉uGUI的Anchor操作起来比NGUI更方便
7) UGUI没有Atlas一说,使用Sprite Packer
8) UGUI的Navigation在Scene中能可视化
9) UGUI的事件需要实现事件系统的接口,但写起来也算简单
2.各自的优缺点
1) NGUI还保留着图集,需要进行图集的维护。而UGUI没有图集的概念,可以充分利用资源,避免重复资源。
2) UGUI出现了锚点的概念,更方便屏幕自适应。
3) NGUI支持图文混排,UGUI暂未发现支持此功能。
4) UGUI没有 UIWrap 来循环 scrollview 内容。
5) UGUI暂时没有Tween组件。