团结:transform.GetComponent与。 GameObject.GetComponent?

时间:2018-06-21 18:56:41

标签: unity3d

我想知道transform和gameobject getcomponent之间有什么区别。

我在这里查看了此资源:https://answers.unity.com/questions/1360282/what-is-the-difference-between-gameobjectgetcompon.html

它指出:“最后,两者是相同的”

两者之间肯定有区别吗?

2 个答案:

答案 0 :(得分:3)

它们是等效的。

请记住Unity的基于组件的体系结构:场景中存在的几乎所有内容都是GameObject,通常会附加一个或多个Components。组件必须附加到GameObject才能存在。

GetComponent方法实际上是整个方法系列,允许脚本查找对特定组件的引用。

如果您在GameObject(例如GetComponent)上调用gameObject.GetComponent,它将找到与该GameObject相连的匹配组件。

如果在某个组件(例如GetComponent)上调用transform.GetComponent,它将找到该组件所附加的GameObject,然后找到该GameObject所附加的匹配组件。这是相同的结果,但是它是方便的快捷方式,可以省去在整个脚本中放置gameObject引用的麻烦。

从技术上讲,这些是单独的方法,但是结果和语义本质上是相同的。在实践中,可以使用您更喜欢的任何一种形式。

答案 1 :(得分:1)

  

两者之间肯定有区别吗?

没有。它们都在同一个对象中调用相同的方法。实际上,transform.GetComponent具有更高的间接级别(性能差异不会明显)。

gameObject.GetComponent如果您已经直接引用了GO,则看起来更加简洁合理。