UGUI多个Canvas的渲染先后层次关系设置

这几天在做游戏的WindowManager,一开始只是想到打开单一窗口和设置窗口并存的问题,一切运行良好。

但是昨天加了一个等待窗口(沙漏加菊花)之后就出现了问题。

首先说明我的Window的结构:

一个空的GameObject

Canvas

所有的UI控件

举例说:

在登录界面,点击登录按钮后向服务器发送登录请求,这个时候会显示转菊花的界面,一切OK。

窗口打开顺序为 登录窗口  --- 等待窗口

下面的大图就是登录窗口,上面的就是沙漏菊花等待窗口。

这个时候如果再弹出一个其它的界面,比如弹出了一个滚动公告,那按照先后顺序来说,滚动公告就会显示在等待界面之上,这是不行的。

我的目的呢,就是要让等待界面显示在最上面!

首先,从MOMO的博文中了解到,貌似有一个API可以使用,

SetSiblingIndex

就是设置 物体在视图中的顺序。

但是实际使用后得出结论,这个API只能调整在同一个Canvas下的UI控件的渲染顺序。对于多个Canvas的不同的窗口而言,这个API没有用处。

于是百度谷歌之,得到一些苗头:

Unity3d中的渲染顺序如下:

不同Camera的Depth

同Camera的soringLayer

同sortingLayer下面的Z轴

但是没有适合我的。

正准备把所有的窗口都由Canvas来管理的时候,看到Canvas下面有一个Sort Order 。

Sort这个词看起来就比较符合口味,排序嘛!

试着把菊花窗口的Sort修改为100,再运行,果然生效!

测试:

先打开等待界面,然后打开登录界面,不设置Sort Order:

可以看到菊花界面无情的被其它界面遮挡住了。

然后

先打开等待界面,再打开其它界面,设置等待界面Canvas的Sort Order为100(因为默认是0,这里可以设置为无限大)

这下就OK了,等待界面永远在其它界面之上了,除非你把其它界面的Sort Order设置的比等待界面大!

时间: 2024-09-30 16:39:24

UGUI多个Canvas的渲染先后层次关系设置的相关文章

Unity3D之UGUI学习笔记(一):UGUI介绍以及Canvas

UGUI是Unity3D4.6官方提供的UI系统,支持2D和3D UI的开发. Unity3D UI史 OnGUI 在Unity4.6之前,官方提供的是OnGUI函数来开发UI界面,当然问题也比较多,首先不支持可视化开发,其次UI始终位于所有3D对象的上方,无法实现在UI上添加3D模型的效果. 现在一般这套系统多用来在Unity编辑器中开发界面或者快速搭建一些调试界面时使用. NGUI 大名鼎鼎的NGUI是可以看做是开发Unity游戏必备的插件,支持可视化开发,同时也支持2D和3D UI的开发,

5、层次关系访问节点和创建节点

层次关系访问节点和创建节点 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta htt

JDK中ClassLoader的分类以及ClassLoader间的层次关系

几个常见的ClassLoader: bootstrap  class  loader: 最早启动的class  loader,一般使用C语言,汇编语言,或是c++写的,用操作系统本地语言写的.这个class  loader你动不了,也没有名字,打印出来是空值. 1,负责先把其他的class loader   load进来,然后其他class  loader再load其他class 2,load  jre最核心的类,最核心的rt.jar拿出来把里边的class load进来. extension

Java输入、输入、IO流 类层次关系梳理

Java输入.输入.IO流 类层次关系梳理 本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958.htm?noadapt=1 http://blog.csdn.net/hguisu/article/details/7418161 https://www.ibm.com/developerworks/cn/java/j-lo-javaio/ http:/

通过节点层次关系获取节点

<!--通过节点的层次关系获取节点对象. 关系:1.父节点:parentNode:对应一个节点对象.2.子节点:childNodes:对应一个节点集合.3.兄弟节点: 上一个兄弟节点:parviousSibling下一个兄弟节点:nextSibling--> <script type="text/javascript"> function getNodeByLevel(){ //获取页面中的表格节点var tabNode = document.getElemen

一张图让你清晰 UIViewController,UINavigationController和 UITabBarController的层次关系

在学习多视图控制器的时候,曾经有一个问题一直困扰着我,就是给标签栏title赋值的问题. 就常用的层次关系来说,一个标签栏视图 里面 套 一个 导航视图 ,导航视图 里 套 我们展示内容 的 内容视图 . UITabBarController->UINavigationController->UIViewController UITabBarController和UINavigationController 都继承自UIViewController UIViewControlleller  的

JavaScript---网络编程(7)-Dom模型(节点间的层次关系,节点的增、删、改)

利用节点间的层次关系获取节点: 上一节讲了3中获取的方式: * ※※一.绝对获取,获取元素的3种方式:-Element * 1.getElementById(): 通过标签中的id属性值获来取该标签对象 * 2.getElementsByName(): 通过标签中的name属性值来获取该标签对象集合 * 3.getElementsByTagName(): 通过标签名来获取该标签对象集合 现在来看看相对获取的方式: ※※二.相对获取(利用节点之间的层次关系),获取节点:-Node 1.父节点:pa

canvas和Matrix之间的关系。

上一篇android中canvas的clipRect和concate调用顺序不同导致的图像效果不同..只是讲到表现,并没有说到原理,今天结合网友说的 ,以及官网developer.android.comjj解释和自己测试的结果,来谈谈自己此知识点的看法. 先看看网友的理解: 初识: 我们看到的View视图其实最终都是在Canvas这个画板上画出来的,可以想象这个canvas有无限大,只是View组件在绘制时,即父组件调用dispatchDraw(Canvas c)分发给各个子组件绘制时,根据子组

层次关系表格,不用递归,快速检索。HierarchyId

最近这几天写了个T4自动实现EF code first和Ado的存储过程.使用过程中发现了一个Sql的类型为HierarchyId.看到时真是百思不得齐姐.算了查一下MSDN吧.从微软官网找到了HierarchyId类型.悲催了.这个字段没有对应C# CLR类型.使用EF6时报错,提示我应该是用Byte[]类型,执行一遍程序.还是有错误,算了谷歌吧.谷歌了一下,发现有解决方案了,什么HierarchyId而且不是SQLTypes的HierarchyId,哦 EF没有找到,最后Nuget获取到了