Unity3D对Component组件的管理机制

孙广东 2015.5.16

我们都知道Unity管理GameObject是采用树形结构就是在Hierarchy面板中的结构。但是具体是怎么管理组件的呢?

同事的测试发现了这个现象:

测试如下:在U5中,先新建一个Button。

添加一个脚本,处理单击按钮的响应:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class TestComponent : MonoBehaviour {

	public void OnClick()
	{
		var text = FindObjectOfType (typeof(Text)) as Text;
		Debug.Log ("现在是: " + text.transform.parent.gameObject.name);
		Destroy (text);

	}
}

运行程序,然后单击看看Log 输出

然后我们在创建一个Button,

对于这个输出,就要有疑问了,  为社么输出的顺序是 Button2--》Button1呢?

那就调整一下 Hierarchy面板的顺序

结果是一样的,所以。 unity对这些组件的管理更像是栈Stack结构存储: 【后进先出】

每当新建一个GameObject后,unity会自动将游戏对象上的组件进行分类,然后将其分别放在各自的Stack中。Unity对每个组件都维护一个Stack。

时间: 2024-10-13 09:56:56

Unity3D对Component组件的管理机制的相关文章

untiy3d action管理机制的编写

使用unity3d对于一些可视化强迫者来说,是一个不错的选择,但unity3d没有cocos2d的action管理机制,比如cocos2dx的CCMoveTo,CCScale等action,所以笔者通过封装action管理来实现类似cocos2dx的actionmanager. 首先需要写一个ActionManager来创建.更新.移除所有action.编写代码实现如下: using UnityEngine;using System.Collections;using System; publi

[原]Unity3D深入浅出 - 认识开发环境中的Component(组件)菜单

Component(组件)是用来添加到GameObject对象上的一组相关属性,本质上每个组件都是一个实例,比如在Cube上添加一个Mesh网格,即面向对象的思维方式可以理解成Cube对象里包含了一个Mesh对象. Component主要包含以下组件:  Mesh:添加网格类型的组件 Mesh Filter:网格过滤器 Text Mesh:文本网格 Mesh Renderer:网格渲染器 Effects:添加特效类型组件 Particle System:粒子系统 Trail Renderer:拖

Unity3d的导入资源的后处理管理机制

孙广东   2015.4.8 在unity中任何资源被导入都会被我们获取到, 这时我们就可以对这些资源做判断,和相应的处理! 我这个例子是要 检查游戏中的一些配置文件,格式必须是Utf-8的编码格式,如果不是就强转换为Utf-8 using UnityEngine; using System.Collections; using UnityEditor; using System.IO; using System.Text; using System.Text.RegularExpression

Qt 内存管理机制

这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里.现在有 Flex 4 的一篇和 <从 C++ 到 Objective-C>系列,感谢大家支持! 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息.也就是说,强类型语言在分配对象内存空间时,总会关联上对象的类型.相比之下,弱类型 语言则不会这样做.在分配了内存空间之后,有两种方法释放空间:手工释放,或者是使用垃圾收集器.C++ 要求开发者手工释放内存空间.这样做的好处是,开发者对内存有完全

【Java深入研究】3、JVM内存管理机制

转自:http://blog.csdn.net/lengyuhong/article/details/5953544 近期看了看Java内存泄露的一些案例,跟原来的几个哥们讨论了一下,深入研究发现JVM里面还是有不少以前不知道的细节,这里稍微剖析一下.先看一看JVM的内部结构-- 如图所示,JVM主要包括两个子系统和两个组件.两个子系统分别是Class loader子系统和Execution engine(执行引擎) 子系统:两个组件分别是Runtime data area (运行时数据区域)组

Android中的内存管理机制以及正确的使用方式

概述 从操作系统的角度来说,内存就是一块数据存储区域,属于可被操作系统调度的资源.现代多任务(进程)的操作系统中,内存管理尤为重要,操作系统需要为每一个进程合理的分配内存资源,所以可以从两方面来理解操作系统的内存管理机制. 第一:分配机制.为每一个进程分配一个合理的内存大小,保证每一个进程能够正常的运行,不至于内存不够使用或者每个进程占用太多的内存. 第二:回收机制.在系统内存不足打的时候,需要有一个合理的回收再分配的机制,以保证新的进程可以正常运行.回收的时候就要杀死那些正在占有内存的进程,操

【朝花夕拾】Android性能篇之(六)Android进程管理机制

前言        Android系统与其他操作系统有个很不一样的地方,就是其他操作系统尽可能移除不再活动的进程,从而尽可能保证多的内存空间,而Android系统却是反其道而行之,尽可能保留进程.Android这样设计有什么优势呢?又是通过怎样的方法来管理这些被保留的进程的呢?Android用户又该如何正确使用手机从而更好发挥Android系统所特有的优势呢?本文将一一为您解开这些谜团.        一.Android进程管理的特殊设计 Linux系统对进程的管理方式是一旦进程活动停止,系统就

苹果系统iOS、macOS应用管理机制

iOS.macOS系统应用管理机制 苹果系统包括:iOS.macOS.watchOS.tvOS.应用软件的生命周期为:开发.上线.安装.使用.卸载.这篇文档将从应用生命周期的各个环节介绍苹果系统对应用的管理机制,主要详细介绍iOS和macOS,watchOS与tvOS由于用户数量少,以及流程与iOS相似度较高,只作了简单介绍. iOS 一.开发 注册账号: 单纯开发是不用付费的,使用模拟器就可以.如果要真机调试,或者提交appstore,需要申请开发者帐号. 需要提交:1.注册一个苹果账号作为开

内存管理机制

Objective-C中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Reference Counting),分别提供对内存的手动和自动管理,来满足不同的需求. ARC: ARC是Auto Reference Counting的缩写,即自动引用计数,由编译器在代码合适的位置中自动添加retain/Release/Autorelease/dealloc方法从而进行内存管理. ARC几个要点: 在对象被创建时 retain count