因此,我一直在尝试遵循大学引擎开发任务的空白指南,但我无法弄清楚如何使用我GameStateManager
来访问和更新堆栈顶部的状态,也称为TopState
在我的代码中。
这很简单,我初始化并运行引擎main
并设置并推送第一个状态:
void main()
{
EApplication::Init();
EApplication* pApp = new EApplication();
pApp->GetGameStateManager()->SetState("TEST", new ETestState(pApp));
pApp->GetGameStateManager()->PushState("TEST");
pApp->GetGameStateManager()->UpdateGameStates(ETime::deltaTime);
EApplication::RunApp();
delete pApp;
}
但是,正如您在下面看到的那样UpdateGameStates
,my 中的函数GameStateManager
尚未执行任何操作,因为我不确定如何访问或指向当前状态,从而调用它自己的相应Update
函数:
游戏状态管理器:
#include "AppGSM\EGamestateManager.h"
EGameStateManager::EGameStateManager(){ topState = new char[8]; }
EGameStateManager::~EGameStateManager(){}
void EGameStateManager::SetState(const char *szName, EBaseGameState *state){}
void EGameStateManager::PushState(const char *szName){}
void EGameStateManager::PopState(){}
void EGameStateManager::ChangeState(const char *szName){}
const char* EGameStateManager::GetTopStateName()
{
return topState;
}
EBaseGameState* EGameStateManager::GetTopState()
{
}
void EGameStateManager::UpdateGameStates(float deltaTime)
{
}
void EGameStateManager::DrawGameStates(){}
我只是想知道当我尝试使用时应该指向什么GetTopState()
,以及如何访问该状态的更新功能?