推
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "EngineFrame/Component/Sprite.h"
|
||||
#include "EngineFrame/Base/Actor.h"
|
||||
#include "EngineFrame/Component/Text.h"
|
||||
#include "Asset/Asset_SoundPack.h"
|
||||
|
||||
Game::Game()
|
||||
{
|
||||
@@ -67,13 +68,6 @@ void Game::Init(std::function<void()> CallBack)
|
||||
|
||||
IMG_Init(IMG_INIT_PNG);
|
||||
|
||||
// 初始化SDL_mixer,支持OGG格式
|
||||
// 44100: 采样率, MIX_DEFAULT_FORMAT: 音频格式, 2: 声道数(立体声), 4096: 缓冲区大小
|
||||
if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096) < 0)
|
||||
{
|
||||
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "SDL_mixer初始化失败! Mix_Error: %s\n", Mix_GetError());
|
||||
m_isRunning = false;
|
||||
}
|
||||
|
||||
// 初始化 TTF
|
||||
if (TTF_Init() == -1)
|
||||
@@ -157,9 +151,16 @@ void Game::HandleEvents(SDL_Event *e)
|
||||
|
||||
void Game::Update(float deltaTime)
|
||||
{
|
||||
//调用松鼠的更新
|
||||
// 内存回收机制
|
||||
m_lastMemoryPrintTime += deltaTime;
|
||||
if (m_lastMemoryPrintTime >= m_memoryPrintInterval)
|
||||
{
|
||||
m_lastMemoryPrintTime = 0;
|
||||
MemoryReclaims();
|
||||
}
|
||||
// 调用松鼠的更新
|
||||
SquirrelEx::GetInstance().Update(deltaTime);
|
||||
if (m_scene != nullptr)
|
||||
if (m_scene != nullptr)
|
||||
m_scene->Update(deltaTime);
|
||||
if (m_uiScene != nullptr)
|
||||
m_uiScene->Update(deltaTime);
|
||||
@@ -205,6 +206,12 @@ void Game::Clear()
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
void Game::MemoryReclaims()
|
||||
{
|
||||
// 音频内存回收
|
||||
Asset_SoundPack::GetInstance().Reclaims();
|
||||
}
|
||||
|
||||
void Game::ChangeScene(RefPtr<Scene> scene)
|
||||
{
|
||||
if (m_scene != nullptr)
|
||||
@@ -225,6 +232,11 @@ void Game::ChangeUIScene(RefPtr<Scene> scene)
|
||||
m_uiScene->Enter();
|
||||
}
|
||||
|
||||
RefPtr<Scene> Game::GetScene()
|
||||
{
|
||||
return m_scene;
|
||||
}
|
||||
|
||||
RenderManager *Game::GetRenderer()
|
||||
{
|
||||
return m_renderer;
|
||||
|
||||
@@ -51,10 +51,14 @@ public:
|
||||
void Render();
|
||||
void Clear();
|
||||
|
||||
void MemoryReclaims();
|
||||
|
||||
// 切换场景
|
||||
void ChangeScene(RefPtr<Scene> scene);
|
||||
// 设定UI层场景对象
|
||||
void ChangeUIScene(RefPtr<Scene> scene);
|
||||
// 获取当前游戏层场景
|
||||
RefPtr<Scene> GetScene();
|
||||
|
||||
RenderManager *GetRenderer();
|
||||
|
||||
@@ -79,7 +83,7 @@ private:
|
||||
#ifdef __SWITCH__
|
||||
float m_Settingfps = 5000.0;
|
||||
#else
|
||||
float m_Settingfps = 5000.0;
|
||||
float m_Settingfps = 144.0;
|
||||
#endif
|
||||
// 单帧时间
|
||||
float m_frameTime = 0.f;
|
||||
@@ -88,6 +92,10 @@ private:
|
||||
// 每秒内的帧数计数器
|
||||
u32 m_frameCounter;
|
||||
u32 m_lastFpsPrintTime;
|
||||
// 内存回收计时器
|
||||
u32 m_lastMemoryPrintTime = 0;
|
||||
// 内存回收间隔
|
||||
u32 m_memoryPrintInterval = 5000;
|
||||
|
||||
public:
|
||||
// 屏幕宽高
|
||||
|
||||
Reference in New Issue
Block a user