《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控件都一定会有一个Depth,深度值大代表显示的优先级高(会越趋向于在界面更上层显示)。

(2)Depth决定的是UI的显示层级关系,一个UI控件是否显示在最上层是由它所属的Panel的Depth和它本身的Depth决定的。一般情况下,属于低Depth的Panel的控件,不管这个控件本身的Depth为多少,它都将显示在高Depth的Panel的控件后面(被高Depth的Panel遮住)。

(3)尽量不要让Panel之间共享同一个Depth,这样会导致性能消耗增加。

(4)制作Panel和UI控件时,记得考虑一下它所属的panel和它自身的Depth是否能让它显示在正确的层次关系上。

2.7.2 小心相机的深度

我们在场景中的每一个Camera也有一个渲染深度,如图2.36所示。

在前文中我们学习到NGUI创建时,都会创建一个它独有的相机。这个相机其实就是Unity中普通的Camera,然后为其附加了一个UICamera的组件。需要注意的是,所有的Camera也都有一个Depth,这个Depth会影响到UI中的Depth,特别是场景有多个Camera来渲染不同层次的UI时,这个影响会比较大。具体我们得遵循以下这些规律。

(1)相机的Depth永远是最高级的,也就是高Depth相机所看到的画面,永远在低Depth相机所看到的画面之上。

(2)如果需要相机有视觉穿透效果(只渲染所看到的东西,其他地方透掉显示其他相机所看到的画面),需要将相机的ClearFlags设置为DepthOnly。

(3)并不是只有负责渲染NGUI的相机的Depth会有影响,所有的相机(比如默认存在的渲染场景的MainCamera)的Depth都受此规律影响。例如,如果将照射UI的摄像机的深度设为0,然后将照射场景的相机深度设为1,那么,将看到场景把所有的UI遮住。

(4)创建UI时,UIRoot下生成的相机默认Depth是比场景中的相机深度高的,不过当场景内有多个摄像机时,一定要管理好每个摄像机的ClearFlags和Depth。

(5)当场景内有多个摄像机时,一定要检查摄像机的CullingMask不要渲染重复的Layer,否则可能导致显示双重画面。如图2.37所示,UI画面被两个相机同时看到,显示了两份(因为两个相机所在的位置不一样,所以看到的大小会不一样)。

时间: 2024-10-07 20:53:34

《Unity 3D NGUI 实战教程》一2.7 深度(Depth)概念的相关文章

《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.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图片按层次显示,不会出现三维立体效果,所

《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 实战教程》一导读

前 言 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 实战教程本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.