測試目的

探究分別在Update和FixedUpdate使用GetKeyDown執行次數,會不同的

測試開始

在Update測試

我們先在Update測試,很正常是一幀重置一下狀態,以防止點選一下執行多次,請看程式碼

private void Update()
{
if (Input.GetKeyDown(KeyCode.J))
{
count += 1;
Debug.Log(count);
}
if (Input.GetKeyUp(KeyCode.J))
{
count = 0;
}
}

測試結果

在FixedUpdate測試(預設每秒執行50幀的情況下)

修改FixedUpdate每秒執行幀率可以在Project > Time > Fixed Timestep設定,不修改也就是0.02,s為單位,每多少s執行一次

void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.J))
{
count += 1;
Debug.Log(count);
}
if (Input.GetKeyUp(KeyCode.J))
{
count = 0;
}
}

測試結果

是不是很迷惑?很正常

請看Unity GetKeyDown的官方解釋

如果你放到FixedUpdate它也會按照Update執行幀率進行重置,有時會有誤差,因為FixedUpdate和Update執行幀率不同,修改固定幀率即可更接近Update執行結果

這些都是我的個人理解,非常感謝您看我的這篇文章