ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
SceneManager.h
浏览该文件的文档.
1#pragma once
2#include "../Core/Core.h"
3#include <memory>
4
5namespace Shit {
6 class Scene; // 前向声明
7
19 class SHIT_API SceneManager final {
20 public:
21 // 禁止拷贝和移动
22 SceneManager(const SceneManager&) = delete;
26
27 // --- 静态API ---
29 inline static void LoadScene(std::unique_ptr<Scene>&& scene) { GetInstance().loadScene(std::move(scene)); }
30 inline static bool LoadSceneFromFile(const std::string& path) { return GetInstance().loadSceneFromFile(path); }
31 inline static void Update() { GetInstance().update(); }
32 inline static void Destroy() { GetInstance().destroy(); }
33 inline static Scene* GetCurrentScene() { return GetInstance().getCurrentScene(); }
34
35 private:
36 friend class EngineContext;
37 explicit SceneManager();
39
40 void loadScene(std::unique_ptr<Scene>&& scene);
41 bool loadSceneFromFile(const std::string& path);
42 void applyLoadScene(std::unique_ptr<Scene>&& scene);
43 void update();
44 void destroy();
45 Scene* getCurrentScene() const;
46
47 std::unique_ptr<Scene> m_currentScene;
48 std::unique_ptr<Scene> m_pendingScene;
49 bool m_isUpdating = false;
50 };
51}
#define SHIT_API
定义 Core.h:14
场景类
定义 Scene.h:34
SceneManager & operator=(const SceneManager &)=delete
static void LoadScene(std::unique_ptr< Scene > &&scene)
切换场景(销毁当前,加载新场景;update 期间调用时延迟到 update 结束后生效)
定义 SceneManager.h:29
static void Update()
定义 SceneManager.h:31
SceneManager(const SceneManager &)=delete
static void Destroy()
定义 SceneManager.h:32
SceneManager(SceneManager &&)=delete
static bool LoadSceneFromFile(const std::string &path)
从 .scene 文件加载并替换当前场景(启动 / 关卡切换共用)
定义 SceneManager.h:30
static Scene * GetCurrentScene()
定义 SceneManager.h:33
friend class EngineContext
定义 SceneManager.h:36
static SceneManager & GetInstance()
SceneManager & operator=(SceneManager &&)=delete
定义 AudioPlayer.h:10