我想知道transform和gameobject getcomponent之间有什么区别。
我在这里查看了此资源:https://answers.unity.com/questions/1360282/what-is-the-difference-between-gameobjectgetcompon.html
它指出:“最后,两者是相同的”
两者之间肯定有区别吗?
答案 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,则看起来更加简洁合理。