Unity中使用GameObject.Find()、FindWithTag()、FindGameObjectsWithTag()等函数的方法

对于在Unity开发的过程中,熟练运用一些函数方法能够有助于我们更好的开发一些功能和提升开发的效率。这里主要讲一些Unity关于查到方面的函数方法。

GameObject.Find()

这个方法没有其他重载的方法。通过的名字来查找一个不是特定的物体,简而言之,当一个场景有多个名字相同的物体的时候,无法找到你想要的那一个,该函数的返回值是一个GameObject类的对象,如:

GameObject target = GameObject.Find("name");//name为所要查找事物的名字

总结:
1)函数的返回值是一个被查找到的对象(GameObject类),如果存在多个同名的物体,也只是返回其中一个。(可能不是你想要的那一个)
2)物体需要处于active()处于true状态才能被找到。
3)FInd()非常消耗性能,不建议在Update()方法里面使用。
4)该函数也可以查找子游戏物体对象。如果多个游戏场景同时运行,那么Find()查找的范围是所有场景。

GameObject.FindWithTag()

该方法与Find()用法比较相似,区别就是该方法是通过标签来查找一个不是特定的游戏物体,如果找到,则返回一个游戏物体对象,没有找到会传一个空字符或者null.抛出一个异常

GameObject target = GameObject.FindWithTag("tag");//tag为所要查找事物的标签

总结
1)该函数物体也是一个不是特定的游戏物体对象
2)该方法消耗的性能比Find()方法小
下面几点基本都与Find()方法相同

GameObject.FindGameObjectsWithTag()

我感觉这个函数挺好用的,这个函数也是根据标签来查找游戏物体对象,它返回的是一个游戏物体对象数组,场景中存在相同标签的物体都将被返回。

GameObject[] targets = GameObject.FindGameObjectsWithTag("tag");//返回tag相同的所有物体
foreach(GameObject target in targets)
{
	//下面的Distance函数的距离可以根据需求设置
    if(Vector3.Distance(target.transform.position,gameObject.transform.position)<=1.01f)
    {
       //可以筛选出一定距离内的物体
       //我通常使用这个方法并结合其他方法找到我所需要的特定的游戏物体对象
    }
}

总结
1)该函数方法的返回值是一个游戏数组对象,存在多个同标签的游戏物体,将全部返回、
2)物体需要处于active()处于true状态才能被找到。
3)该方法消耗的性能比Find()方法小
4)物体需要处于active()处于true状态才能被找到。
还有几个查找方法,后续会添加上…

你可能感兴趣的:(Unity,函数使用,C#,unity3d,c#,游戏开发)