Cocos2dx v3 - 每隔一定间隔不断保存游戏的正确方法

Cocos2dx v3 - Proper way to constantly save the game every certain interval?

本文关键字:保存 游戏 方法 v3 Cocos2dx      更新时间:2023-10-16
每隔

一定间隔不断保存游戏(例如:保存玩家的等级、获得的经验、当前 HP/MP 等)的正确方法是什么,以便

即使用户不当退出游戏,他/她也可以恢复到游戏的相同状态吗?

这合适吗?

 float _interval;
 bool GameMaster::init() {
      if(!Layer::init()) {
         return false;
      }

      // Run every frame
      _interval = 0;
      this->scheduleUpdate();
 } 
 void GameMaster::update(float dt) {
      _interval += dt;
      if(_interval > 10.0) {
           // Runs every 10 sec
           saveGame();
           // Restart the counter
           _interval = 0.0;
      }
 }

使用调度程序可能是一个更好的主意,如下所示:

float _interval;
bool GameMaster::init() {
  if(!Layer::init()) {
     return false;
  }
  Scheduler* scheduler = Director::getInstance()->getScheduler();
  scheduler->schedule(schedule_selector(GameMaster::saveGame), this,
                      _interval, true);
} 
void GameMaster::saveGame(float deltaTime) {
    saveGame();
}

您可以在此处找到调度程序的文档。