《Unity 3D NGUI 实战教程》一2.6 2DUI和3DUI的工作原理

2.6 2DUI和3DUI的工作原理

Unity 3D NGUI 实战教程

2.6.1 2DUI的工作原理

先创建一个2DUI(创建方法上文已讲过),然后在2DUI的“根”UIRoot下创建两个精灵(创建方法后面会详解)。然后得到的效果如图2.32所示。

从图2.32中可以看到,创建的两个Sprite为两个按钮图片,它们的位置在UIRoot的红框(视窗)上,也就是Sprite的z轴、相机的z轴、UIRoot的z轴都为0,因为2DUI都是纯粹的2D图片按层次显示,不会出现三维立体效果,所以都是直接紧贴着视窗,只要UI控件在UIRoot的红框范围内,那么UI就能够正常显示在Game上。在Game视图中,我们看到的景象如图2.33所示。

2DUI最本质的意义是:UI摄像机是一个正交摄像机。

2.6.2 3DUI的工作原理

同上2.6.1小节一样,先创建一个3DUI,然后在“根”下面创建两个Sprite,得到如图2.34所示的景象。

从图2.34中可以看到,在3DUI下,创建的UI控件都在一个三维立体空间中,摄像机是一个透视的摄像机,这和2DUI有着截然不同的区别,因为2DUI是一个正交摄像机。

3DUI中UIRoot的坐标点如图2.34所示,是在三维空间的一个点上,这个位置是创建UI时自动定义好的,以后创建的UI控件都会自动地在这个点所在的面上生成(自动统一到UIRoot的z 轴,因为Sprite属于UIRoot的子物体),所以图2.34中UIRoot根物体和两个创建的Sprite的z 轴都为0,而Camera的z 轴为-700。

我们在图2.34生成的两个Sprite用3DUI做出的效果,在Game视图里看,和2DUI几乎是一模一样的,如图2.35所示。

但是需要注意的是,如果需要将2DUI改为3DUI,不是简单地将摄像机改为透视模式就行了,在NGUI 3.6.0以后的某些版本中,这样会导致看不到任何UI控件(这些版本的2DUI的控件和Camera、UIRoot三者在同一个z轴面上,而变成3D摄像机后是看不到和摄像机同z轴的物体),如果将3DUI的摄像机直接改为正交模式,也并不能简单地变成2DUI,因为正交相机的Size并不和NGUI默认的值一样。所以,在进行UI开发时,最好先思考一下将要使用2D还是3DUI更好。

2.6.3 如何判断该选择哪一种UI

上文中我们讲解了2DUI和3DUI的原理,那么在实际的项目开发中,如何来判断应该使用哪一种UI呢?有以下一些规律可以参考。

(1)新版本的NGUI对3DUI支持很好,如果3DUI和2DUI选择哪一个都行的情况下,建议选择3DUI,扩展性更强。

(2)如果出现UI不允许有远近透视的大小变化,必须选择2DUI。例如,角色头顶的血条,在人物跑远了之后如果血条并不会变小,这时血条就必须用2DUI做。

(3)如果要出现UI有三维变换的效果,例如,由远及近的变大、三维旋转等,就必须用3DUI。

(4)无法明确知道应该用哪一种UI的情况下,建议选用3DUI。

(5)不论用哪一种UI,其实本质上只是一个摄像机的区别,基本上都能实现UI效果,只是需要的处理不一样,所以,如果选择错了UI模式也不用太着急,总有很多办法来解决的。

时间: 2024-09-30 19:00:19

《Unity 3D NGUI 实战教程》一2.6 2DUI和3DUI的工作原理的相关文章

《Unity 3D NGUI 实战教程》一2.5 创建第一个UI

2.5 创建第一个UI Unity 3D NGUI 实战教程 2.5.1 创建一个2D UI 制作UI时,首先我们要创建UI的"根".在Unity顶部NGUI菜单中选择Create,然后选择2D UI,如图2.25所示. 创建完成后,我们能看到图2.26所示的景象,在Scene窗口中,NGUI自动生成了一个名为UI Root的物体,其中带有一个Camera作为子物体. 这个新生成的Camera,是NGUI生成的专门用来渲染UI的相机,当我们生成NGUI的UI Root时,就自动将生成的

《Unity 3D NGUI 实战教程》一2.3 制作第一个UI图集

2.3 制作第一个UI图集 Unity 3D NGUI 实战教程 2.3.1 学会解剖UI的资源结构 为什么要剖析UI的资源结构?因为通常情况下,策划设计好UI的功能和大概布局之后,美术人员会做出一张UI的成品效果图,我们称之为UI设计图.然后,客户端程序需要根据自己的制作方式,告诉美术人员如何分割出相应的UI元素提交给程序,以完成制作. 下面以图2.17所示的UI设计图作为例子来讲解分析.首先说明一点,客户端程序一定要同时拿到UI设计图和UI功能描述文档才能彻底知道这个UI会进行什么样的操作逻

《Unity 3D NGUI 实战教程》一2.1 导入NGUI插件

2.1 导入NGUI插件 Unity 3D NGUI 实战教程 2.1.1 NGUI版本介绍 NGUI插件目前较新的版本是3.6以后的版本. 在NGUI 3.0以前的时期,底层的事件通信体系完全依赖于SendMessage,这是一个效率比较低下的发消息方式,那个时期大多数Unity的开发者都在使用当时很流行的NGUI 2.6版本,甚至目前还有少数开发者在使用. 在NGUI 3.0及以后的版本中,NGUI进行了大革新,其中革命性的就是将整个的底层消息机制全部换为效率高的EventDelegate.

《Unity 3D NGUI 实战教程》一2.2 认识基本的UI资源

2.2 认识基本的UI资源 Unity 3D NGUI 实战教程 2.2.1 什么是UI精灵(Sprite) 我们在制作UI时,经常将一些零碎的小的UI资源(比如,一个小箭头.一个按钮等)打包成一张大图,然后在使用时,只使用这个大图中的一部分(例如,只使用其中小箭头的那一小块),那么这一块"被切出来"的图片,就可以称之为精灵. 如图2.11所示的就是一个又一个的UISprite. 2.2.2 什么是UI图集(Atlas) 我们在制作UI时,会将一些零碎的小的UI资源打包到一张大图中,然

《Unity 3D NGUI 实战教程》一2.4 制作第一个UI字体

2.4 制作第一个UI字体 Unity 3D NGUI 实战教程 2.4.1 为什么要制作UI字体 在游戏的项目开发中,字体是经常会用到的东西,因为游戏中不论是聊天.公告.提示语还是界面显示,都会涉及用程序来写字.一般来说,会有系统默认字体供我们使用,但是出于以下两个原因我们经常会需要制作独特的字体. 系统字体的风格和美观程度等无法满足我们的需求.一般来说,系统字体都比较死板.生硬,风格单一,经常无法满足项目需求.例如,我们希望游戏中所有文字都使用楷书来突出中国风,那么则需要我们自己植入楷书字体

《Unity 3D NGUI 实战教程》一2.7 深度(Depth)概念

2.7 深度(Depth)概念 Unity 3D NGUI 实战教程 2.7.1 强化对深度的理解 深度的概念将会一直伴随着UI的制作过程,是UI中一个非常重要的概念.我们在2.5.3小节中讲解UIPanel时已经讲解了深度的概念,这里我们再强化一下对深度的理解.在老版本的NGUI中,UI的显示层次关系是依靠z轴进行的.在新版本的NGUI中,所有UI的z轴都被统一,然后用深度来决定和管理显示的层次关系.关于深度,我们要记住一下关键点. (1)每一个UIPanel和每一个UI控件都一定会有一个De

《Unity 3D NGUI 实战教程》一导读

前 言 Unity 3D NGUI 实战教程在手机游戏开发兴起的当下,Unity 3D引擎依靠其良好的跨平台特性,一跃成为全球第一大引擎,被广泛地使用.越来越多的游戏开发者开始关注和使用Unity 3D引擎.Unity 3D引擎最大的短板在于其原生的GUI系统有很大的缺陷,例如,性能和方便程度等都不适合进行商业开发,所以,大部分开发者都开始使用NGUI.NGUI的GUI以良好的性能优化.方便的开发模式.成熟稳定等特点,已经成为全球Unity游戏开发者的UI制作首选插件.因为NGUI是一个插件的缘

《Unity 3D NGUI 实战教程》一1.2 什么是NGUI

1.2 什么是NGUI Unity 3D NGUI 实战教程 1.2.1 NGUI插件介绍 NGUI是专门针对Unity引擎.用C#语言编写的一套插件,经历了数十个版本的更迭之后,它已经成为了目前世界上应用最广.最成熟的Unity制作UI的插件,完美地弥补了Unity引擎原生GUI系统和NewGUI系统的各种不足之处.程序员可以利用它提供的一整套UI框架和事件通知系统来进行项目的UI设计和制作,NGUI凭借其强大的功能.良好的优化和易用易学性,让大多数程序员都赞赏有加! 1.2.2 NGUI的强

《Unity 3D NGUI 实战教程》一第 2 章 NGUI基础

第 2 章 NGUI基础 Unity 3D NGUI 实战教程本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.