can somebody know how ?~
You could implement a data manager class, which stores the data needed throughout different scenes.
For Android it’s [UserDefault][1] singleton.
[1]: http://www.cocos2d-x.org/reference/native-cpp/V3.10/db/d94/classcocos2d_1_1_user_default.html
Using singleton
for Example
In any scene you want to get or set the info of your game as:
get/set music on or not
get/set sound fx on or not
get/set the current level
…
//First define singleton.h…
Singleton.h
template <typename T>
class Singleton
{
public:
inline static T* getInstance();
inline static void release();
private:
static T* t;
};
template <typename T>
inline T* Singleton<T>::getInstance()
{
if (!t)
{
t = new T;
}
return t;
}
template<typename T>
inline void Singleton<T>::release()
{
if (t)
{
delete t;
t = 0;
}
}
template <typename T>
T* Singleton<T>::t = 0;
//second define class GameData inherits from singleton…
GameData.h
#include "cocos2d.h"
#include "Singleton.h"
class GameData : public Singleton<GameData>
{
public:
GameData();
bool music;
bool sound;
int level;
//-----------------------------
void save();
void load();
//------------------------------------------
};
GameData.cpp
#include "GameData.h"
#define kConfig_music "music"
#define kConfig_sound "sound"
#define kConfig_level "level"
using namespace cocos2d;
using namespace std;
GameData::GameData()
{
music = true;
sound = true;
level = 1;
load();
}
void GameData::save()
{
UserDefault* data = UserDefault::getInstance();
data->setBoolForKey(kConfig_music, music);
data->setBoolForKey(kConfig_sound, sound);
data->setIntegerForKey(kConfig_level, level);
data->flush();
}
void GameData::load()
{
UserDefault* data = UserDefault::getInstance();
music = data->getBoolForKey(kConfig_music, music);
sound = data->getBoolForKey(kConfig_sound, sound);
level = data->getIntegerForKey(kConfig_level, level);
}
//And then…
//simply use getInstance of GameData (ofcourse you can use in any where of you project):
//get..
GameData::getInstance()->music
//set...
GameData::getInstance()->level = 10;
GameData::getInstance()->save() //save the new value for re-load later...
//------------------------------------
Finally…
remember call GameData::getInstance()->release() in destructor of the project.
//------------------------------------