UI的重要性

UI其实就是2D mesh。cocos2d-x中所有的游戏元素都是UI。

Unity中,游戏元素大部分都是3D的,所以2D的UI主要是用于做背景、展示和与玩家交互使用了。

初级游戏客户端程序基本都会从写UI开始,因为UI逻辑贯穿游戏的整个业务,便于理解游戏的玩法。

所以写UI是最基础的工作,但是就和使用Unity一样,写UI很简单,但是写好,并不简单。

NGUI和UGUI

Unity中的UI目前主要分为两种,NGUI和UGUI。NGUI是第三方写的,但是历史悠久,文档多,UGUI是Unity自己的,Unity在内部做了优化,但是很多细节都被封装起来了。

从功能上来说,用哪个都行。使用率上,NGUI由于历史原因使用者还是多一些。性能上,理论上UGUI的性能更好一些,但是NGUI也可以通过开发者自己的优化达到甚至超过UGUI的性能(我总结过一篇文章,找个机会再放上来)。所以使用哪个,仁者见仁智者见智。

我用的比较多的是NGUI,但是时代总是要发展的,所以这个Demo准备用UGUI。

UGUI文档

绘制顺序

绘制是有先后顺序的,UGUI的绘制先后顺序取决于UI元素在Hierarchy中的顺序,排在上面的先画,如果两个UI元素重叠,那么后画的叠在先画的上面。

可以通过transform成员的方法在脚本中控制绘制顺序:SetAsFirstSibling、SetAsLastSibling、SetSiblingIndex。

Render Modes

Screen Space - Overlay:UI元素绘制覆盖在屏幕上,如果屏幕改变尺寸和分辨率,canvas也会自动改变。

Screen Space - Camera:和Overlay类似,但是区别在于Canvas是放在Camera前面,如果camera的FOV改变之类的,也会导致UI显示的效果发生变化。如果屏幕改变尺寸和分辨率,canvas也会自动改变。

World Space:Canvas就等同于一个普通的游戏元素,出现在场景中,可以设置Canvas的尺寸大小和位置,根据其3D位置,决定它是在物体前或后。