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

2 篇文章 0 订阅
2 篇文章 0 订阅

对于在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状态才能被找到。

GameObject.FindObjectOfType(Type type)

根据指定的类型来查找游戏对象。它返回第一个匹配类型的游戏对象,如果找不到则返回null。

MyScript script = GameObject.FindObjectOfType<MyScript>();

总结

  • 该函数会在场景中查找第一个匹配给定类型的游戏对象,并返回找到的游戏对象的引用。 参数 type 是一个 System.Type
    类型的对象,用于指定要查找的类型。 请注意,该函数只返回在激活的场景中找到的对象。如果对象在不激活的场景中或被禁用,将无法找到。

  • 该函数通常用于获取指定类型的单个组件实例。如果你想要一次获取多个匹配的组件实例,可以使GameObject.FindObjectsOfType(Type
    type) 函数

  • 总而言之,GameObject.FindObjectOfType(Type type) 是一种根据给定类型查找游戏对象的便捷方法,可以用于获取场景中的特定类型的对象引用。

最后基本常用的查找方法就是这些了,希望能帮助到大家。

  • 15
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值