맨손으로 게임 상태 시스템을 해결했지만 개선 방법에 대한 조언이 필요합니다. 나는 모든 게임 상태가 상속받은 GameState.h를 가지고있다. 그러므로 나는이 게임의 벡터를 저장하는 클래스가이 게임 상태지만 팝/푸시 (_back) 등의 사용 기능을 처리C++ 게임 - 게임 상태를 두 번 이상 초기화해야합니까?
std::vector<GameState *> gameStates;
언급 한 게임 상태를 관리 할 수 있습니다. 순간
내가 이렇게 내 게임 상태를 만드는 오전 :.H
GameState *mainMenu = nullptr;
GameState *inGame = nullptr;
을 cpp를
mainMenu = new MainMenuState();
inGame = new InGameState();
다음과 같이 그들을 초기화 :
mainMenu->initialize(this, camera);
inGame->initialize(this, camera);
다음에 th 이 같은 벡터에 EM :
setCurrentGameState(mainMenu);
내가 그것을해야
나는 이미 그 일을하고 같은 또는 다음과 같이 :setCurrentGameState(new MainMenuState(this, camera));
내가 게임의 시작에서 게임의 모든 상태를 초기화해야하거나 벡터에 푸시 될 때 초기화해야합니까? 그런 다음 다시 튀김이 삭제됩니다. 과거에는 푸시 할 때 초기화하려고 시도했지만 메모리를 훨씬 더 많이 처리합니다. 그러나 게임의 시작이 성능을 저해하는 모든 게임 상태를 초기화하겠습니까?
귀하의 경우 두 가지 악의 어느 것이 더 나은지를보고 프로필을 확인하십시오. – keltar
원시 포인터를 전혀 사용하지 않겠습니다. 대신 std :: shared_ptr <>'또는'std :: unique_ptr <>'을 사용하십시오. 친절한 조언; 일반 게임 엔진을 만들지 마십시오. 제대로 작동하려면 많은 시간이 필요합니다. 다른 여러 사람들과 함께 작업하지 않는 한 단일 게임에 집중하는 것이 훨씬 낫습니다. – olevegard
감사합니다 owvegard, Std :: Shared_ptr 또는 std :: uniquire_ptr를 사용하면 어떤 이점이 있습니까? 그리고 나는 그들을 어디에서 사용해야합니까? –