关于NGUI与UGUI的区别

来源:互联网 发布:非结构化数据存储方案 编辑:程序博客网 时间:2024/06/08 01:28

功能

图集方面

NGUI:是必须先打出图集然后才能开始做界面。这一点很烦,因为始终都要去考虑你的UI图集。比如图集会不会超1024,图集该如何来规划等等。在制作的时候需要将图片打入图集后才能进行制作。
UGUIsprite packer的模式。自带的图集打包模式,注意图片不能放在Resources文件夹下面,Resources文件夹下的资源将不会被打入图集,切记。没打包的时候生成的图集保存在和Assets文件夹同级的目录,Libary/AtlasCache里面,打包的时会重新自动生成就会生成并且会打到包中。在制作的时候不需要打图集,值需要标记包名称就行,换图什么的都很方便,Sprite Editor有切图工具,使用方便
问题:UGUI这种打包时候打图集的方式,我们看不到文件,并且不能Resource.Load,以后的图集热更怎么办

列表和布局

        NGUI
                  UIRoot下,通过锚点进行自适应
Grid,Table等布局组件,
显示区域是PanelClip来实现的,进行paneldrawcall合并
控件可以把任意UI元素作为参考点来进行锚点
WrapList等复杂控件
        UGUI
有专门的布局组件LayoutGroup,使用还是比较方便的,
显示区域是采用的是Mask,采用Mask会导致drawcall的上升;
个人感觉泛化了Panel的概念,就是一个带有ImageRectTransform
通过spritepack进行drawcall合并
锚点只能相对于父节点,但是个人感觉比NGUI的锚点使用方便的多
没有提供很多的复杂控件,但是自己封装也不困难
 

渲染顺序

        NGUI
先根据Paneldepth进行排序,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

原创粉丝点击