我很难理解泛型

时间:2015-05-20 02:32:40

标签: c# generics unity3d

我在理解泛型时遇到一些困难。我正在写这个统一代码。似乎只是调用rigidbody.velocity已经过时了。经过一些搜索后,我发现他们已更新为使用GetComponent<T>。我理解泛型增加了可重用性,并且易于铸造。在这种情况下,什么是GetComponent<T>。这是一堂课吗?当我说GetComponent<Rigidbody>()这是构造函数吗?为什么我甚至需要调用构造函数?

public class Mover : MonoBehaviour {

    public float speed;
    private Rigidbody moverRigid;

    // Use this for initialization
    void Start () {
        moverRigid = GetComponent<Rigidbody>();
        moverRigid.velocity = transform.forward * speed;
    }

    // Update is called once per frame
    void Update () {

    }
}

2 个答案:

答案 0 :(得分:4)

  

在这种情况下,GetComponent<T>是什么。这是一个班级吗?

不,它不是一个类,它是一个通用的方法。泛型方法用作任何其他方法,但它使用参数声明。在这种情况下,您的参数为Rigidbody。要获取有关通用方法的更多信息,请查看this MSDN article

  

当我说GetComponent()是构造函数吗?为什么我甚至需要调用构造函数?

它不是构造函数,它只是Start的标准方法,但在基类上定义(注意Mover继承自MonoBehaviour

答案 1 :(得分:2)

GetComponent<Rigidbody>()不是构造函数。它是MonoBehaviour类上的一个方法,它返回一个已经转换为类型Rigidbody的值。

这在Unity的documentation中有解释。

  

这些被称为通用功能。他们的重要性   脚本是你可以指定参数的类型和/或   调用函数时的返回类型。