【unity学习笔记十】查找对象的五种方法

unity中提供了获取对象的五种方法:

  1. 通过对象名称(Find方法)
  2. 通过标签获取单个游戏对象(FindWithTag方法)
  3. 通过标签获取多个游戏对象(FindGameObjectsWithTags方法)
  4. 通过类型获取单个游戏对象(FindObjectOfType方法)
  5. 通过类型获取多个游戏对象(FindObjectsOfType方法)

Find方法:
static GameObject Find (string name)
传入的name可以是单个的对象的名字,也可以是hierarchy中的一个路径名,如果找到会返回该对象(活动的),如果找不到就返回null。

var cubeF = GameObject.Find(“/CubeFather”);

if (null != cubeF)

{

Debug.Log(“find cube father~”);

}

cubeF = GameObject.Find(“CubeFather”);

if (null != cubeF)

{

Debug.Log(“find cube father, no /~”);

}

 

var cubeS = GameObject.Find(“/CubeFather/CubeSon”);

if (null != cubeS)

{

Debug.Log(“find cube son~”);

}

cubeS = GameObject.Find(“CubeFather/CubeSon”);

if (null != cubeS)

{

Debug.Log(“find cube son, no /~”);

}

cubeS = GameObject.Find(“CubeSon”);

if (null != cubeS)

{

Debug.Log(“find cube son, no one /~”);

}


结果如上,可见不论参数是对象名字还是对象的路径,只要对象存在都会查找到,但是建议最好是写详细的路径名例如CubeFather/CubeSon,这样的话,在unity查找的过程中会省很多事,效率高;另外不要在每一帧都执行的函数中调用该函数,可以看上图结果中会执行好多次,用到某个对象时可以在Start这种只执行一次的函数中定义变量获取Find的返回值,再在每帧都执行的函数中使用该变量即可~


FindWithTag方法:
static GameObject FindWithTag (string tag)
返回一个用tag做标识的活动的对象,如果没有找到则为null。

var sphere = GameObject.FindWithTag(“Sphere”);

if (null != sphere)

{

Debug.Log(“Sphere~”);

}

将hierarchy中某个对象的Inspector面板上面的Tag自定义一个,然后为其选择自定义(上述例子中用的Sphere)

,当然没有的话,利用下拉列表中的AddTag构建

FindGameObjectsWithTag方法:
static GameObject[] FindGameObjectsWithTag (string tag)
返回一个用tag做标识的活动的游戏物体的列表,如果没有找到则为null。具体代码略过~

FindObjectOfType方法:

static Object FindObjectOfType(Type type)
返回类型为type的活动的第一个游戏对象

FindObjectsOfType方法:
static Object FindObjectsOfType(Type type)
返回类型为type的所有的活动的游戏对象列表

发表评论

电子邮件地址不会被公开。 必填项已用*标注