如果我有一个带有多个Component类的相同类型的Component(例如,让我们调用这个类型的HingeJoint ),那么如果我在GameObject上调用函数GetComponent<HingeJoint>(),那么会得到哪个HingeJoint组件
根据我的研究,这个答案声称团结只会从Component的数组中返回第一次匹配--然而,答案只是基于答案者自己的游戏引擎设计的有根据的猜测,该引擎致力于模仿统一,而不是团结实际所做工作的权威来源。
发布于 2018-01-31 09:31:27
统一中的每个对象及其次对象都按层次顺序放置在集合中。您可以称它为"WYSIWYG“,因为正如您看到的那样,场景层次结构中的每个对象都以相同的顺序加载在该列表中。同样的事情也适用于组件,这也是为什么将Transform组件放在每个其他组件之上的主要原因。
GetComponent将从列表顶部看到的Components集合返回第一项。要确切地确定哪个组件将被返回,您可以在检查器视图中按您的意愿对它们进行排序。
来自文件页
在用户脚本中查询组件时,需要使用授予检查窗口中组件的顺序。如果以编程方式查询组件,您将得到检查器中看到的顺序。
发布于 2018-01-31 09:33:53
编辑后m.rogalski校正
手册指出,组件是按照您在检查器中的顺序进行检查的,因此GetComponent()将为您提供T类型的第一个
我建议不要使用检查器命令,而是使用
GetComponents<T>()要检索所有这些信息并动态选择所需的内容(如果需要,请参见文档 )。
这是因为如果组件的顺序重要,会使您维护项目变得非常困难。项目的任何其他工作人员都需要知道必须放置这些组件的约定。即使您单独工作,在添加或删除组件时也需要非常小心,如果出现错误,IDE将无法给出明确的错误
https://stackoverflow.com/questions/48538396
复制相似问题