前不久我遇上了一个问题,在不确定路径或者路径分布太麻烦不想手写的情况下如何获取场景中的重名物体呢?
批量获取对象
首先,既然没法确定路径,那就只能用暴力的方法了——直接获取场景中的全部对象。
GameObject.FindObjectsOfTypeAll(typeof(GameObject));
使用这样的语句,可以获得场景中所有类型为GameObject
的对象。但是值得注意的是,这个函数的返回类型是Object[]
而非GameObject[]
!
获取游戏对象
我们知道能够直接区分对象的变量莫过于string transform.name
这个变量,于是在获取游戏对象时可以使用这样的语句:
GameObject myGameobject = GameObject.Find(string name);
但是这样的查找方式存在一个问题!当场景中存在多个名称为name
的对象时,其返回值为第一个名称为name
的对象!
获取重名的游戏对象
要解决这个问题,可以在获取场景中全部对象时将其强制转换为GameObject
类型,即使用下面的语句:文章来源:https://www.toymoban.com/news/detail-405599.html
GameObject[] myGameobjects = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];
然后再循环遍历一遍获取到的数组找出所有名称与name
相同的元素就得到了所有这些物体,并且即使重名也不会重复获得相同的结果。文章来源地址https://www.toymoban.com/news/detail-405599.html
到了这里,关于关于如何在Unity中获取多个重名对象的笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!