Cocos2d x 如何在cocos2dx(c+;+;)ios游戏中将数据存储为数据库

Cocos2d x 如何在cocos2dx(c+;+;)ios游戏中将数据存储为数据库,cocos2d-x,Cocos2d X,我对cocos2d-x ios游戏开发完全陌生,从stackoverflow中学到了很多。我只想感谢所有的软件编码人员。现在我的问题是我正在制作一个具有关卡和高分的游戏。但仍然找不到存储高分和清除关卡的方法。当游戏重新启动时,所有的值都设置为初始值因为没有数据库可获取。我在cocos2d-x中听说过userdefault,但确实找不到执行的方法。谁能帮我拿个样品吗。如果您想存储高分、当前级别等基本信息,则可以使用CCUserDefault,如果您想存储复杂数据,则可以使用SQLite或CCDic

我对cocos2d-x ios游戏开发完全陌生,从stackoverflow中学到了很多。我只想感谢所有的软件编码人员。现在我的问题是我正在制作一个具有关卡和高分的游戏。但仍然找不到存储高分和清除关卡的方法。当游戏重新启动时,所有的值都设置为初始值因为没有数据库可获取。我在cocos2d-x中听说过userdefault,但确实找不到执行的方法。谁能帮我拿个样品吗。如果您想存储高分、当前级别等基本信息,则可以使用
CCUserDefault
,如果您想存储复杂数据,则可以使用
SQLite
CCDictionary

下面是存储和检索Cocos2dx-3.0中高分的伪代码:

const char* KEY_HIGH_SCORE = "high_score";

// Store High Score
UserDefault::getInstance()->setIntegerForKey(KEY_HIGH_SCORE, 100);

// Retrieve High Score.
int high_score = UserDefault::getInstance()->getIntegerForKey(KEY_HIGH_SCORE);

CCUserDefault充当键值对并存储与键值对应的值。假设您希望存储游戏的高分,以便用户退出后重新启动游戏时,更改应保持不变 为此,在.cpp文件中,在包含标头后的顶部获取一个const key值

const char *HIGH_SCORE="key1";
key1是一个键,对于您声明的每个const char*,该键必须不同 删除init函数中这些行之后的行,直到返回true语句

if(!CCLayer::init())
{
return false;
}
不删除返回true。然后在init函数中编写以下代码

CCUserDefault *def=CCUserDefault::sharedUserDefault();
def->setIntegerForKey(HIGH_SCORE, 2000);
def->flush();
这里,def是指向CCUserDefault的指针,它将有助于访问该类中的所有方法。 SetIntegerWorkey是将相应的整数值设置为常量char*的方法。 有更多的函数来存储字符串、浮点、布尔和双精度值

def->flush()是一个将内容刷新到xml文件的函数。它基本上将数据保存到xml文件中

要从键中检索值,假设我们要检索高分并显示在标签上

int high_score=def->getIntegerForKey(HIGH_SCORE);
char s[4];
sprintf(s,"%d", high);
这里我们将整数转换为字符串,以便在标签上显示

int high_score=def->getIntegerForKey(HIGH_SCORE);
char s[4];
sprintf(s,"%d", high);
将分数添加到标签

CCLabelTTF *high_label=CCLabelTTF::create(s, "Arial.fnt", 20);
high_label->setPosition(ccp(200,200));
this->addChild(high_label);
现在运行您的项目,您将在屏幕上看到2000

现在停止运行并注释以下行

//def->setIntegerForKey(HIGH_SCORE, 2000);
//def->flush();
再次重新运行项目,屏幕上的值仍然是2000。这意味着现在xml文件中存储了高分,并从中检索该值。因此,即使在关闭应用程序后,更改仍会持续