Unity 怎么获取场景中顶级节点的所有GameObject

 我来答
eulubanp2632
2017-04-05 · TA获得超过858个赞
知道小有建树答主
回答量:91
采纳率:85%
帮助的人:66.4万
展开全部
Unity3d中要对对象进行操作必须首先去获取得到场景中的对象,那么弄清除获取对象的小细节就能够事半功倍
工具/原料

Unity3d和其内置的编译器
方法/步骤

在层级面板中选择多个对象相同的部分在监听器面板中给显示出来并且批量操作

在Untiy3d的层级面板中创建多个对象并有复杂的父子级关系

在EmptyObject上挂载的C#脚本来通过GameObject的(静态的方法)Find()的对象名称获取G1对象,通过获取G1对象的直接父节点对象打印输出信息

分别通过EmptyObject挂载C#和Cube没有挂载C# 的GameObject 静态方法find()的元素目录(精确指定对象)获取一个指定的对象,获取的对象分为隐藏和显示两种情况

在EmptyObject上挂载的C#脚本通过transform(公共的方法)find()的对象的名称获分别获取G1,G5和G6。结果只能够获取挂载C#的对象的直接子节点对象

分别通过EmptyObject挂载C#和Cube没有挂载C# 的transform公共方法find()的元素目录(精确指定对象)获取一个指定的对象,获取的对象分为隐藏和显示两种情况

7
总结:通过GameObject的静态的find(),对象的名称去查找一个对象从整个层级面板中去匹配一个对象忽略掉目录结构的多少和是否对象挂载了该操作的C#脚本,但最后获取的对象可能并不是我们想要的,如果查找的对象被隐藏则找不到通过名称所匹配的对象;通过GameObject的静态的find()对象的目录基本去定位获取对象时一种精确匹配且是不管该匹配的对象是否被隐藏。--------------通过transform的公共find()方法且是对象的名称来匹配的只能够所编译的C#一定是挂载到被查找的对象上面且是找其直接子节点对象(非多级子对象),目录查找就忽略掉了多级别的子节点对象。
电戏有戏计3361
2017-04-05 · 知道合伙人数码行家
电戏有戏计3361
知道合伙人数码行家
采纳数:436 获赞数:759
获得全国计算机应用技术证书考试

向TA提问 私信TA
展开全部
1.GameObject.Find()
通过场景里面的名子或者一个路径直接获取游戏对象。
GameObject root = GameObject.Find(“GameObject”);
我觉得如果游戏对象没再最上层,那么最好使用路径的方法,因为有可能你的游戏对象会有重名的情况,路径用“/”符号隔开即可。
GameObject root = GameObject.Find(“GameObject/Cube”);
GameObject.Find()使用起来很方便,但是它有个缺陷如下图所示,就是如果你的这个GameObject天生acive = false的话。那么你用GameObject.Find()是永远也无法获取它的对象的。如果对象都获取不到,那么对象身上脚本啊 组件啊啥的都是获取不到的,变成了没有意义的对象。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
房管大厦01栋
2018-11-26
知道答主
回答量:8
采纳率:0%
帮助的人:4万
展开全部
SceneManagement.Scene.GetRootGameObjects
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式