用unity有很长一段时间了,平时因为工作的关系,一直懒于整理。现在这段时间不是很忙,正好可以梳理一下。先从游戏中最基本的界面说起。说到游戏界面,现在市面上基本上都是用UGUI或者NGUI在做。两者之间各有千秋。大致如下:
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组件。 一般用DoTween实现(但我一直没用过,弹出界面相关的逻辑,我一般都用ITween)
除上述之外,还发现了一点不同:
UGUI是多线程渲染,对于静态的界面用UGUI效果更好。
但是UGUI是根据摄像机的中心点渲染,而NGUI则是根据锚点渲染。因此,UGUI适合渲染静态界面,对于动态的最好用UGUI。貌似六龙争霸的游戏就是融合了UGUI和NGUI。
上述中有些是自己的理解,如有问题,欢迎各位大神指正