栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

关于如何在Unity中获取多个重名对象的笔记

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于如何在Unity中获取多个重名对象的笔记

前不久我遇上了一个问题,在不确定路径或者路径分布太麻烦不想手写的情况下如何获取场景中的重名物体呢?


批量获取对象

首先,既然没法确定路径,那就只能用暴力的方法了——直接获取场景中的全部对象。

GameObject.FindObjectsOfTypeAll(typeof(GameObject));

使用这样的语句,可以获得场景中所有类型为GameObject的对象。但是值得注意的是,这个函数的返回类型是Object[]而非GameObject[]!


获取游戏对象

我们知道能够直接区分对象的变量莫过于string transform.name这个变量,于是在获取游戏对象时可以使用这样的语句:

GameObject myGameobject = GameObject.Find(string name);

但是这样的查找方式存在一个问题!当场景中存在多个名称为name的对象时,其返回值为第一个名称为name的对象!


获取重名的游戏对象

要解决这个问题,可以在获取场景中全部对象时将其强制转换为GameObject类型,即使用下面的语句:

GameObject[] myGameobjects = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];

然后再循环遍历一遍获取到的数组找出所有名称与name相同的元素就得到了所有这些物体,并且即使重名也不会重复获得相同的结果。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号