#include namespace extra2d { SceneModule::SceneModule() = default; SceneModule::~SceneModule() { shutdown(); } bool SceneModule::init() { // 创建导演 director_ = makePtr(); if (!director_->init()) { return false; } // 绑定事件 onUpdateListener_.bind([this](float dt) { if (director_) { director_->update(dt); } }); onRenderBeginListener_.bind([this]() { // 渲染开始,触发场景渲染 if (director_) { director_->render(); } }); onRenderEndListener_.bind([]() { // 渲染结束,清理工作 }); return true; } void SceneModule::shutdown() { if (director_) { director_->shutdown(); director_.reset(); } // 重置监听器(会自动注销) onUpdateListener_.reset(); onRenderBeginListener_.reset(); onRenderEndListener_.reset(); } } // namespace extra2d