所以我一直在学习关于Unity中二维运动的教程,视频成功地运行了代码。然而,当我运行代码时,Unity说:线路
public Vector2 Velocity => rigidBody2D.velocity;
是错误,它迫使我改用GetComponent。所以我遵循它并将代码更改为:
public Vector2 Velocity
{
get => GetComponent<Rigidbody2D>().velocity;
set => GetComponent<Rigidbody2D>().velocity = value;
}
我做得对吗?
是的,你的变体是合法的以下情况更为常见:
private Rigidbody2D rb2d;
public Vector2 Velocity;
void Start(){
rb2d = GetComponent<Rigidbody2D>();
}
void Update(){
rb2d.velocity = Velocity;
}
我唯一的建议是在Start中也获得引用,因为一直使用GetComponent有点浪费性能。
使用GetComponent<Rigidbody2D>()
而不是过时的Component.rigidbody2D
是很好的。
但是,存储返回的对象,而不是在每次需要引用它时(包括在调用Velocity
属性期间(查找它,是更好的。这将带来更好的性能。
更改:
public Vector2 Velocity
{
get => GetComponent<Rigidbody2D>().velocity;
set => GetComponent<Rigidbody2D>().velocity = value;
}
至:
public Vector2 Velocity
{
get => GetComponent<Rigidbody2D>().velocity;
set => GetComponent<Rigidbody2D>().velocity = value;
}
private Rigidbody2D _rigidBody;
private Start()
{
_rigidBody = GetComponent<Rigidbody2D>();
}
public Vector2 Velocity
{
get => _rigidBody.velocity;
set => _rigidBody.velocity = value;
}