在不实例化的情况下访问GetComponent()

时间:2020-07-20 13:01:36

标签: c# unity3d game-development

我是Unity Game Development的新手,在代码中发现以下用法有点令人困惑。

private Transform enemy;

// Start is called before the first frame update
void Start()
{
    enemy = GetComponent<Transform>();
}

根据文档GetComponent()是公共函数。那么如何在不实例化的情况下访问它呢? 我发现在Unity社区中有人问过类似的问题,但我没有找到确切答案可以回答问题的任何答案。请帮助我理解这一点。 下面是Unity论坛上问题的链接。 Question

我的Unity版本是2018.4.16f1 谢谢!

2 个答案:

答案 0 :(得分:2)

您的类最有可能从MonoBehaviour继承,而Behaviour则从Component继承。

MyItem实现GetComponent

Fazit:您正在调用此方法的实例仅是Component,实例this被调用。


Start的顺便说一句,已经有一个专用属性Component.transform,因此您不应使用Transform来获得GetComponent引用。

答案 1 :(得分:1)

您正在调用将MonoBehavior添加到的GameObject的GetComponent()方法,并将其分配给“变形”敌人。它甚至是您链接的问题中的第一个答案。