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

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,还未有不能解决的情况。

时间: 2025-01-15 04:52:59

unity销毁层级物体及 NGUI 深度理解总结的相关文章

深度理解Key-Value Observing 键值观察

前言   在上一阶段的开发过程中,我们大量使用了 KVO 机制,来确保页面信息的及时同步.也因此碰到了很多问题,促使我们去进一步学习 KVO 的相关机制,再到寻找更好的解决方案.鉴于 KVO 让人欲仙欲死的使用经历,在这里做一个简单分享.此分享的目的,更多的是在于点出 KVO 相关的技术点,供我们大家在学习和使用过程中做一个参考. 对于 KVO 的背后机制感兴趣的同学,可以直接看第三部分,KVC 和 isa-swizzling . 对于 替代方案感兴趣的同学,请直接跳到末尾的第五部分,有列出了目

对于linux下system()函数的深度理解(整理)

对于linux下system()函数的深度理解(整理) (2013-02-07 08:58:54) 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定?

RRDtool深度理解

RRDtool深入学习 介绍 RRDtool:Round Robin Database Tool(轮询的数据库工具) 是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置.我们可以把用于存储数据的数据库的空间看成一个圆,上面有很多刻度.这些刻度所在的位置就代表用于存储数据的地方.所谓指针,可以认为是从圆心指向这些刻度的一条直线.指针会随着数据的读写自动移动.要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题.在一段时间后,

Java深度理解——Java字节代码的操纵

导读:Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展.但是对于 Java语言的深度理解和运用,毕竟是很少会有人涉及的话题.InfoQ中文站特地邀请IBM高级工程师成富为大家撰写这个<Java深度历险>专栏,旨在就Java的一些深度和高级特性分享他的经验.在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行 Java 程序就可以了.

深度理解依赖注入

1.依赖在哪里   老马举了一个小例子,是开发一个电影列举器(MovieList),这个电影列举器需要使用一个电影查找器(MovieFinder)提供的服务,伪码如下: 1/*服务的接口*/ 2public interface MovieFinder { 3    ArrayList findAll(); 4} 5 6/*服务的消费者*/ 7class MovieLister 8{ 9    public Movie[] moviesDirectedBy(String arg) {10     

深度理解java虚拟机读书笔记(二)HotSpot Java对象创建,内存布局以及访问方式

内存中对象的创建.对象的结构以及访问方式. 一.对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载.虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被加载.解析并初始化.如果没有完成这个过程,则必须执行相应类的加载. (二)在堆上为对象分配空间.对象需要的空间大小在类加载完成后便能确定.之后便是在堆上为该对象分配固定大小的空间.分配的方式也有两种:

深度理解Android InstantRun原理以及源码分析

深度理解Android InstantRun原理以及源码分析 @Author 莫川 Instant Run官方介绍 简单介绍一下Instant Run,它是Android Studio2.0以后新增的一个运行机制,能够显著减少你第二次及以后的构建和部署时间.简单通俗的解释就是,当你在Android Studio中改了你的代码,Instant Run可以很快的让你看到你修改的效果.而在没有Instant Run之前,你的一个小小的修改,都肯能需要几十秒甚至更长的等待才能看到修改后的效果. 传统的代

深度理解IIS下部署ASP.NET Core2.1 Web应用拓扑图

原文:深度理解IIS下部署ASP.NET Core2.1 Web应用拓扑图 IIS部署ASP.NET Core2.1 应用拓扑图 我们看到相比Asp.Net, 出现了3个新的组件:ASP.NET Core Module.Kestrel.dotnet.exe, 后面我们会理清楚这三个组件的作用和组件之间的交互原理. 引入Kestrel的原因 进程内HTTP服务器,与老牌web服务器解耦,实现跨平台部署 IIS.Nginx.Apache等老牌web服务器有他们自己的启动进程和环境:为了实现跨平台部署

unity渲染层级关系小结

http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这里就把自己解决问题中总结的经验记录下来. Unity中的渲染顺序自上而下大致分为三层. 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机