在多个答案中,都提到Update
每帧被调用一次,不应该用于物理更新,但是应该用于输入,否则您可能会错过重要事件。
现在出现的问题是如果我Update
影响物理对象怎么办?
例如,在释放鼠标时,一些球开始移动并旋转。
void Update
{
if (Input.GetMouseButtonUp(0))
{
ball.getComponent<Rigidbody>().AddForce(vector);
ball.getComponent<Rigidbody>().AddTorque(vector2);
}
}
答案 0 :(得分:1)
要获得最佳性能,您应该拆分代码。
在您提到的特定情况下,代码将变为:
bool mouseUp = false;
void Update()
{
mouseUp = Input.GetMouseButtonUp(0);
}
void FixedUpdate()
{
if (mouseUp)
{
ball.getComponent<Rigidbody>().AddForce(vector);
ball.getComponent<Rigidbody>().AddTorque(vector2);
mouseUp = false;
}
}
-------------
编辑(在derHugo和Wouter Vandenputte评论之后)
在某些情况下,FixedUpdate可能会被多次调用一帧。因此,使用后重置该值更安全。在示例情况下,通过添加mouseUp = false
。