Find 使用规则
在 Unity 项目开发的时候,我们可以通过代码 Find 对象的名字从而获得指定的对象。Find 会遍历 Hierarchy 视图里面的游戏对象,在找到第一个符合的对象的时候就会终止遍历。而通过实践可以发现,这种遍历是从底部开始到上面,而不是从顶部遍历到下面,这个在运用的时候很关键。
The Demo
创建5个 Cube,让它们的名字统一都为 Cube。
创建一个新的脚本,添加以下代码,然后将它挂载到场景中的某个物体上。
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class FindTarget : MonoBehaviour 6 { 7 void Start() 8 { 9 GameObject myCube = GameObject.Find("Cube"); 10 myCube.GetComponent<Renderer>().material.color = Color.red; 11 } 12 }
通过上面的代码,遍历可以获得场景中的第一个 Cube 对象,并且将它的颜色变成红色。
结果表明:遍历的顺序并不是想象的从上往下依次查找,而是从底部开始进行遍历。
在使用这个方法的时候,应该注意 Find 的这个物体必须是 Active 的,也就是说在场景中处于激活的状态。如果不是激活的状态,会继续向上遍历,查找下一个符合的对象。
如果全部符合的对象都不是激活状态就会发生空指针的情况。