首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有T类型的多个组件的GetComponent<T>上调用GameObject时,统一如何决定返回哪个组件?

在具有T类型的多个组件的GetComponent<T>上调用GameObject时,统一如何决定返回哪个组件?
EN

Stack Overflow用户
提问于 2018-01-31 09:12:40
回答 2查看 2.6K关注 0票数 1

如果我有一个带有多个Component类的相同类型的Component(例如,让我们调用这个类型的HingeJoint ),那么如果我在GameObject上调用函数GetComponent<HingeJoint>(),那么会得到哪个HingeJoint组件

根据我的研究,这个答案声称团结只会从Component的数组中返回第一次匹配--然而,答案只是基于答案者自己的游戏引擎设计的有根据的猜测,该引擎致力于模仿统一,而不是团结实际所做工作的权威来源。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 09:31:27

统一中的每个对象及其次对象都按层次顺序放置在集合中。您可以称它为"WYSIWYG“,因为正如您看到的那样,场景层次结构中的每个对象都以相同的顺序加载在该列表中。同样的事情也适用于组件,这也是为什么将Transform组件放在每个其他组件之上的主要原因。

GetComponent将从列表顶部看到的Components集合返回第一项。要确切地确定哪个组件将被返回,您可以在检查器视图中按您的意愿对它们进行排序。

来自文件页

在用户脚本中查询组件时,需要使用授予检查窗口中组件的顺序。如果以编程方式查询组件,您将得到检查器中看到的顺序。

票数 3
EN

Stack Overflow用户

发布于 2018-01-31 09:33:53

编辑后m.rogalski校正

手册指出,组件是按照您在检查器中的顺序进行检查的,因此GetComponent()将为您提供T类型的第一个

我建议不要使用检查器命令,而是使用

代码语言:javascript
复制
GetComponents<T>()

要检索所有这些信息并动态选择所需的内容(如果需要,请参见文档 )。

这是因为如果组件的顺序重要,会使您维护项目变得非常困难。项目的任何其他工作人员都需要知道必须放置这些组件的约定。即使您单独工作,在添加或删除组件时也需要非常小心,如果出现错误,IDE将无法给出明确的错误

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48538396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档