在游戏更新循环中,将bool标志从false更改为true的最佳方式是什么?例如,如果我在下面有这个简单的例子,如果按住按钮“A”,Input类将Game类的启用布尔值设置为true,如果你释放它,则将其设置为false,并将Game类中的计数器设置为false启用次数从真变为假。例如,如果按“A”并释放两次计数器应该更新为2.在60fps更新Game :: Update()时,计数器将与当前方法错误。为了解决这个问题,我将SetEnable中的检查和计数器移到了Update循环中。在游戏更新循环中计数bool真/假更改
// Input class
// Waits for input
void Input::HandleKeyDown()
{
// Checks if key A is pressed down
if (key == KEY_A)
game.SetEnable(true);
}
void Input::HandleKeyUp()
{
// Checks if key A is released
if (key == KEY_A)
game.SetEnable(false);
}
// Game class
void Game::SetEnable(bool enable)
{
if(enable == enable_)
return;
enable_ = enable;
//Will increment the counter as many times A was pressed
if(enable)
counter_ += 1;
}
void Game::Update()
{
// Updates with 60fps
// Will increment the counter as long as A is pressed
/*
if(enable_ == true)
counter_ += 1;
*/
}
更新在您更改状态的情况下柜台。所以如果按下KEY_A,并且enable_为false,则更改为true并计数。 –
计数器并不真正记录启用更改的次数。 –
由于问题不明确,我不得不改写和添加更多细节。让我知道是否需要进一步更新。 – sabotage3d