feat: add delayed scene destruction to prevent null references

This commit is contained in:
2026-01-05 14:29:08 +08:00
parent cc1771f511
commit 2ed0c6445d
4 changed files with 23 additions and 3 deletions

View File

@@ -150,6 +150,7 @@ void SceneManager::changeScene(const std::string& sceneName) {
// 退出当前场景
if (m_scene) {
m_scene->onExit();
m_quitedScene = m_scene;
}
// 切换到目标场景
m_scene = target;
@@ -205,4 +206,14 @@ void SceneManager::handleSceneEvent(const SceneEvent& event) {
SDL_Log("SceneManager::handleSceneEvent: Unhandled event type!\n");
break;
}
}
void SceneManager::destoryQuitedScene() {
if (!m_quitedScene) {
return;
}
const auto info = typeid(*m_quitedScene.get()).name();
m_quitedScene.reset();
std::cout << "SceneManager: " << info << " destroyed\n";
}