unity销毁层级物体及 NGUI 深度理解总结

摘要:
//以下部分在线收集3.NGUI深度和层次结构摘要1.在同一面板下,同一图集的不同精灵的显示仅由深度控制,这是最常用的方法。NGUI图集之间的处理通过默认调整控件的Z值来区分,但在这里,他可以调整同一图集中每个控件的Z数值,这不是很好。在UIPanel中,为每个材质添加一个图层变量。当同一层取决于深度来确定前后关系,而不同层取决于层来确定前后的关系时,在绘制UIDrawCall时,根据层偏移以下节点。

http://www.2cto.com/kf/201311/258811.html

1.想找到层级面板中某个物体,并销毁,利用下面的代码:

 
 GameObject  obj = GameObject.Find("所要找的名字"); Destroy(obj);
 
 如果要找的物体比较多,可以将找到的物体放在一个数组中,对于物体的名字如果是按照顺序或者一定规律命名的话,也可以通过for循环统一找并赋值,例如:物体的名字依次为house1,house2,……house10的话,定义一个string  str;和一个GameObject类型的数组a存找到的物体,循环代码如下:
 
for(int i=1;i<11,i++)
 
  {
 
         str = “house”;
 
        str = str +i;
 
     a[i] = GameObject.Find("str");
 
 
       Destroy(a[i]);//销毁找到的物体
 
 }
 
 
还可以通过 GameObject.FindWithTag("标签名")来寻找,提前是给这些物体要添加tag
 
2.NGUI层级关系与非层级关系
 
NGUI层级关系就是创建时默认的那个层级关系,包括UIRoot , Camera , anchor,panel,非NGUI层级关系是Camera,然后在里面创建控件,但是Camera要挂上UIcamera 和UIpanel脚本。
 
 
 
 
//以下部分网上搜集
 
3.关于NGUI深度、层次总结(做过很多NGUI界面后理解会更深刻)
 
 
1、同一个panel下,同一个atlas的不同sprite的显示只受depth的控制,这是最经常用的方式。此时不论精灵的z轴如何变化,depth高的一定在前面。(相同atlas其实是共用同一个Z轴深度)
2、不同panel下,同一个atlas的不同sprite不受depth的控制,而受z轴控制。此时只需稍微调节下其中一个精灵的z轴就可以,比如0.1,就可以控制sprite的显示
3、不同panel下,不同atlas的精灵的穿插,受z轴的控制。
4、同一个panel下,不同Atlas的sprite,受z轴控制,depth不起作用。
 
项目中做到复杂一些的界面,经常会用到多个图集,以技能界面为例,项目中常用的图片放到共用图集中, 
这是一个图集,技能界面本身独有的元素,比如跟技能职业相关的背景,算作第二个图集,还有一些技能图标, 
图标单独归类到一个图集中,再一个就是字体的图集。基本一个界面如此分法,最多需要4个图集。NGUI的图集之间的 
处理,默认是靠调整控件的Z值来区分的,但是这里他可以调整同一个图集每个一个控件的Z值,其实不是很好。经常会出现图层相互遮挡的情况,尤其对于控件比较多的界面,一段时间回过来再修改界面的时候,整个要崩溃。 
我的做法是。在UIPanel中,为每一个Material添加一个layer的变量,当同一图层靠depth来决定前后关系,不同图层靠 
layer来决定前后关系,在绘制UIDrawCall的时候,根据layer对跟节点做一定偏移。这样就能从Z值中解放出来。 
如果大家也有碰到图层的问题,可以参考这样的做法,以此种方法来处理图层关系,简单,做过项目的圈套UI,还未有不能解决的情况。

免责声明:文章转载自《unity销毁层级物体及 NGUI 深度理解总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux时间同步告诉你九种博客赚钱方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

unity 2d 和 NGUI layer

http://blog.csdn.net/xtxy/article/details/37876825 在使用unity2d开发游戏的时候,使用了NGUI作为界面,本来二者配合得还挺好,但是一个使用场景出现了问题,就是一个ngui的sprite需要放置在unity2d sprite后面显示,也就是用ngui得sprite作为背景,结果发现替换sprite的a...

NGUI系列教程三

接下来我们再来看Progress Bar和Slider,对比参数我们可以发现,Progress Bar和slider的明显区别在于slider多一个Thumb选项,这里的Thumb就是我们拖动的时候点击的按钮。 Empty 和Full选项其实就是前景和背景的Sprite。这里大家都已经熟悉了,我们看Slider和ProgressBar的根节点,也可以发现,...

NGUI系列教程二

接下来我们创建一个Label,NGUI->Open the Widget Wizard,打开widgetTool对话框,在Template中选择Label,确定AddTo右侧选项为panel,点击,Add To完成Label创建。 1.Label属性窗口如图 1.下面的节奏可能有点快,大家可以先熟悉一下上面讲的流程,再进行下面的学习。接下来我们...

unity3D游戏开发十四之NGUI一

转:http://blog.csdn.net/kuloveyouwei/article/details/23676039 在Unity中,可以使用代码控制其自身所携带的GUI来实现图形界面的搭建。但是这些组件的搭建效率很低,而且已经无法满足现在市场对图形用户界面美感的要求,所以,引入了NGUI来增加所要开发的图形用户界面的美感。NGUI是一个功能强大的UI...

NGUI系列教程一

NGUI是Unity的一个插件,使用它来制作你的游戏UI必定将事半功倍。为什么这么说呢?首先我们说说GUI与NGUI的区别,GUI是Unity自带的绘制界面工具,它的成像原理是基于表层的,所以执行效率非常的低,并且没有提供复杂的UI的接口,就算开发者硬着头皮写上去只能让UI的执行效率更低。然而NGUI 完全依赖与3D就好比在游戏世界中的摄像机直直的照射在...

NGUI的输入框制作(attach- input filed script的使用)

一,我们添加一个sprite,给这个sprite添加一个box collider ,然后添加input filed script,如下图: 二,我们给sprite添加一个child的label,然后绑定到UIInput中,这样我们就可以运行输入文字,PS:如果不可以输入中文,这时跟label的字体选择有关,我们应该选择支持中文的字体,结果如下图 这样输...