功能
图集方面
NGUI
:是必须先打出图集然后才能开始做界面。这一点很烦,因为始终都要去考虑你的
UI
图集。比如图集会不会超
1024
,图集该如何来规划等等。在制作的时候需要将图片打入图集后才能进行制作。
UGUI
:
sprite packer
的模式。自带的图集打包模式,
注意图片不能放在
Resources
文件夹下面,
Resources
文件夹下的资源将不会被打入图集,切记。没打包的时候生成的图集保存在和
Assets
文件夹同级的目录,
Libary/AtlasCache
里面,打包的时会重新自动生成就会生成并且会打到包中。在制作的时候不需要打图集,值需要标记包名称就行,换图什么的都很方便,
Sprite Editor
有切图工具,使用方便
问题:
UGUI
这种打包时候打图集的方式,我们看不到文件,并且不能
Resource.Load
,以后的图集热更怎么办
列表和布局
NGUI
:
在
UIRoot
下,通过锚点进行自适应
有
Grid,Table
等布局组件,
显示区域是
Panel
的
Clip
来实现的,进行
panel
内
drawcall
合并
控件可以把任意
UI
元素作为参考点来进行锚点
有
WrapList
等复杂控件
UGUI
:
有专门的布局组件
LayoutGroup
,使用还是比较方便的,
显示区域是采用的是
Mask
,采用
Mask
会导致
drawcall
的上升;
个人感觉泛化了
Panel
的概念,就是一个带有
Image
的
RectTransform
;
通过
spritepack
进行
drawcall
合并
锚点只能相对于父节点,但是个人感觉比
NGUI
的锚点使用方便的多
没有提供很多的复杂控件,但是自己封装也不困难
渲染顺序
NGUI
先根据
Panel
的
depth
进行排序,
Panel
再内部
Depth
排序
NGUI
提供查看某个
Panel drawcall
占用情况的工具,方便进行
drawcall
调优
UGUI
采用
Hierarchy
层级和
Z
轴坐标来决定渲染顺序,越下面渲染在顶层
.
文本显示
NGUI
支持动态字体,
斜体,粗体,下划线,删除线,超链接,角标,颜色,描边,阴影,渐变色
支持表情符号,但需要将表情打入图集,但是中文是用的动态图集,没法打图集。
UGUI
只支持粗体,斜体,大小(可以一个控件内多个字体大小),颜色,其他的网上有(但是很少),但是都不太好用,
控件
基础控件没什么大差别
NGUI
图集单个图片效果什么的只能对复制图集实现
UGUI
图集单个图片可以使用
material,
动画
NGUI
内部集成了
Tween
动画系统,也能用
unity
自带的动画系统,但是这些
Tween
动画协程比较多,不建议使用
UGUI
也能使用第三方动画系统和自带动画系统,没什么区别,这方面没什么
程序
事件系统(输入与响应)
NGUI
通过每个空间上的
BoxCollider
来进行输入响应,
UGUI
UI
自动拦截输入,事件触发;提供各种接口
补充:UGUI中的可以选择渲染模式的,在画布Canvas上可以选择使用相机渲染或者OverLay,还可以对层级进行非常方便的设置。两者都是组件式开发的典型。在图文混排这一方面,UGUI虽然有一定的劣势,但是现在有很多图文混排的插件,随着不断的更新,这些插件的易用性也不断提升,能和UGUI做出非常好的适应。但是NGUI也不是一无是处,NGUI作为一个开源的项目,非常适合一些开发复杂UI的工作,尤其是需要了解底层实现的时候,NGUI的优势就会体现出来。
总结:
UGUI由于是Unity原生支持的,所以使用上会更加的人性化。并且伴随着版本升级功能会越来越强,逐渐将成为主流ui方案。NGUI是ugui出现之前的产物,通过MeshRenderer来实现类似CanvasRenderer的功能,概念上有点蹩脚。作为一个插件虽然已最大努力让ui开发工作变得简单,但相比能够让UnityEditor做出相应修改的ugui(如RectTransform的出现),其易用性是没法比的。综合来说,新的项目建议使用uGUI,学习成本不高,工具流更有助于提高开发效率。
转载链接: http://blog.csdn.net/yadong_mail/article/details/51160052
参考链接: http://www.jianshu.com/p/da6de9a8a874