Jim*_*uch 4 c# unity-game-engine gameobject
如果我有一个附加了GameObject
多个Component
相同类型的类(HingeJoint
为了示例目的,我们将其称为此类型),HingeJoint
如果我GetComponent<HingeJoint>()
在我的函数上调用该函数,我将获得哪个组件GameObject
调用该函数,我将获得哪个组件?
根据我的研究,这个答案声称 Unity 将简单地返回 s 数组中的第一个匹配项Component
- 然而,这个答案只是基于回答者自己的游戏引擎设计的有根据的猜测,该设计致力于模仿 Unity,而不是权威来源Unity 实际做了什么。
Unity 中的每个对象及其子对象都按层次放置在一个集合中。您可以将其称为“所见即所得”,因为正如您所看到的,场景层次结构中的每个对象都按照它们在该列表中显示的顺序加载。同样的事情也适用于组件,这是主要原因Transform
同样的事情也适用于组件,这也是组件放置在其他组件之上的
GetComponent
将返回集合中的第一项Components
将返回从列表顶部看到的要准确确定将退回哪个组件,您可以在检查器视图中根据需要订购它们。
从文档页面:
\n\n\n\n您在检查器窗口中为组件指定的顺序就是您在用户脚本中查询组件时需要使用的顺序。如果您以编程方式查询组件,您\xe2\x80\x99将获得您在检查器中看到的顺序。
\n
m.rogalski 修正后编辑
手册指出组件按照您将其放入检查器的顺序进行检查,因此 GetComponent() 将为您提供 T 类型的第一个组件
我无论如何建议不要使用检查员排序,而是使用
GetComponents<T>()
Run Code Online (Sandbox Code Playgroud)
检索它们并动态选择您需要的一个(如果需要,请参阅文档)
这是因为如果组件的顺序很重要,那么维护项目会变得非常困难。从事该项目的任何其他人都需要了解必须放置这些组件的约定。即使您单独工作,在添加或删除组件时也需要非常小心,并且如果出现错误,您的 IDE 将无法给您明确的错误
归档时间: |
|
查看次数: |
3704 次 |
最近记录: |