每隔一定时间间隔不断保存游戏的正确方法是什么(例如:保存玩家的等级,获得的经验,当前的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();
}


您可以找到调度程序的文档here

10-08 11:39