码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-08 14:11:13      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:unity   canvas   界面   ui   

这几天在做游戏的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设置的比等待界面大!



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

标签:unity   canvas   界面   ui   

原文地址:http://blog.csdn.net/huutu/article/details/43636241

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!