希望有人能引导我走向正确的方向。并提前道歉,因为我只是一名学生。C++ OpenGL:如何使加载屏幕状态转换到游戏级别状态?
我想为我的项目做什么,我正在试图让我的基本加载屏幕过渡到游戏关卡屏幕。所以我想要做的是,一旦加载屏幕被激活(或已经出现在屏幕上),我想在这一点上开始加载我的游戏状态。目前正在做的是在开始时加载所有内容,这需要一段时间。
所以目前我的项目从主菜单开始。然后当我按下输入,它开始加载屏幕。我已经使用按键像这样我的操作状态变化:
void Game::update()
{
static bool enterPreviouslyPressed = false;
static bool escapePreviousPressed = false;
const Uint8 *keys = SDL_GetKeyboardState(NULL);
if (keys[::SDL_SCANCODE_ESCAPE] && !escapePreviousPressed && typeid(*fsm->getState()) == typeid(GameState))
{
fsm->setState(menuState);
}
else if (keys[::SDL_SCANCODE_RETURN] && !enterPreviouslyPressed && typeid(*fsm->getState()) == typeid(MainMenuState))
{
fsm->setState(loadingState);
}
else if ((keys[::SDL_SCANCODE_RETURN] && !enterPreviouslyPressed) && typeid(*fsm->getState()) == typeid(LoadScreenState))
{
fsm->setState(gameState);
}
else if (keys[::SDL_SCANCODE_ESCAPE] && !escapePreviousPressed && typeid(*fsm->getState()) == typeid(MainMenuState))
{
exit(0);
}
enterPreviouslyPressed = keys[::SDL_SCANCODE_RETURN] != 0;
escapePreviousPressed = keys[::SDL_SCANCODE_ESCAPE] != 0;
fsm->update();
}
我这样做最初这是否使我可以手动更改状态检查一切正常。我想知道是否有一个简单的(ish)方式,比如布尔标志或其他更简单的方法来实现。我无法在网上找到任何教程,所以想知道是否有人知道如何做到这一点的最佳解决方案。我在这里看到了一个问题,kindda类似,但我不确定它是否回答了我的问题,因为这个人在我不熟悉的线程中这样做。道歉,如果我似乎没有正确的逻辑 - 所以请告知,否则,或者如果有人知道我在哪里可以看到示例代码,那么任何援助表示赞赏。
如果有人能提供帮助,请提前致谢。
问题是什么是什么呢?你想知道是否有更简单的方法来处理状态机? – JojOatXGME