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 输出

Unity3D对Component组件的管理机制_第1张图片

然后我们在创建一个Button,


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

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

Unity3D对Component组件的管理机制_第2张图片

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

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




你可能感兴趣的:(canvas,unity3d,3D)