我在理解泛型时遇到一些困难。我正在写这个统一代码。似乎只是调用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 () {
}
}
答案 0 :(得分:4)
在这种情况下,
GetComponent<T>
是什么。这是一个班级吗?
不,它不是一个类,它是一个通用的方法。泛型方法用作任何其他方法,但它使用参数声明。在这种情况下,您的参数为Rigidbody
。要获取有关通用方法的更多信息,请查看this MSDN article
当我说GetComponent()是构造函数吗?为什么我甚至需要调用构造函数?
它不是构造函数,它只是Start
的标准方法,但在基类上定义(注意Mover继承自MonoBehaviour
)
答案 1 :(得分:2)
GetComponent<Rigidbody>()
不是构造函数。它是MonoBehaviour
类上的一个方法,它返回一个已经转换为类型Rigidbody
的值。
这在Unity的documentation中有解释。
这些被称为通用功能。他们的重要性 脚本是你可以指定参数的类型和/或 调用函数时的返回类型。