Answers:
FixedUpdate
可以比Update
您的设置更快或更慢地运行。这取决于负载(Update
运行速度)和设置的速度FixedUpdate
(位于“编辑”->“项目设置”->“时间”中)。理想情况下,由于Update
每帧运行一次,因此您要在其中捕获输入。如果您需要对FixedUpdate
方法中的输入进行操作(例如控制物理物体),请在中设置标志,Update
然后在中进行处理FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
从该FixedUpdate
方法控制物理仍然是一个好主意,因为不太可能需要经常更新物理,并且固定更新的物理比可变更新的物理更容易预测(确定性)。
FixedUpdate
。这是需要进行游戏测试才能真正弄清“感觉”正确的事情之一。
您需要了解每个人的工作。Update()
无论哪种方式,都会被尽可能频繁地调用(不确定,也许可以设置上限)。FixedUpdate()
在每个固定的时间被调用(因此“固定”)。
输入输入就Update()
这么简单(因为您注意到FixedUpdate()
可能无法捕获输入事件)。但是,游戏逻辑可能会陷入其中任何一种。物理学必须是确定性的,这就是为什么它应该存在FixedUpdate()
。其他事情不必。根据用途,您必须确定合适的功能。
值得一提的是,有些应用程序的所有游戏逻辑更新都在内部FixedUpdate()
(甚至在之外Unity
),这称为“固定步骤游戏循环”。将所有更新代码包含在固定的步进函数中,可以为您提供确定性,并使您的应用每次(在每个设备上)更可能以相同的方式运行。还允许一些精美的功能,例如重播。