ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
SceneManager.h
浏览该文件的文档.
1
#pragma once
2
#include "
../Core/Core.h
"
3
#include <memory>
4
5
namespace
Shit
{
6
class
Scene
;
// 前向声明
7
19
class
SHIT_API
SceneManager
final {
20
public
:
21
// 禁止拷贝和移动
22
SceneManager
(
const
SceneManager
&) =
delete
;
23
SceneManager
&
operator=
(
const
SceneManager
&) =
delete
;
24
SceneManager
(
SceneManager
&&) =
delete
;
25
SceneManager
&
operator=
(
SceneManager
&&) =
delete
;
26
27
// --- 静态API ---
28
static
SceneManager
&
GetInstance
();
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
();
38
~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
}
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:14
Shit::Scene
场景类
定义
Scene.h:34
Shit::SceneManager::operator=
SceneManager & operator=(const SceneManager &)=delete
Shit::SceneManager::LoadScene
static void LoadScene(std::unique_ptr< Scene > &&scene)
切换场景(销毁当前,加载新场景;update 期间调用时延迟到 update 结束后生效)
定义
SceneManager.h:29
Shit::SceneManager::Update
static void Update()
定义
SceneManager.h:31
Shit::SceneManager::SceneManager
SceneManager(const SceneManager &)=delete
Shit::SceneManager::Destroy
static void Destroy()
定义
SceneManager.h:32
Shit::SceneManager::SceneManager
SceneManager(SceneManager &&)=delete
Shit::SceneManager::LoadSceneFromFile
static bool LoadSceneFromFile(const std::string &path)
从 .scene 文件加载并替换当前场景(启动 / 关卡切换共用)
定义
SceneManager.h:30
Shit::SceneManager::GetCurrentScene
static Scene * GetCurrentScene()
定义
SceneManager.h:33
Shit::SceneManager::EngineContext
friend class EngineContext
定义
SceneManager.h:36
Shit::SceneManager::GetInstance
static SceneManager & GetInstance()
Shit::SceneManager::operator=
SceneManager & operator=(SceneManager &&)=delete
Shit
定义
AudioPlayer.h:10
include
ShitEngine
Scene
SceneManager.h
制作者
1.17.0