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

标签 cocos2d-x

我是 cocos2d-x ios 游戏开发的新手,真的从 stackoverflow 学到了很多东西。我想感谢所有的软件编码人员。现在我的问题是我正在制作一款具有关卡和高分的游戏。但还是做不到。找不到存储高分和清除级别的方法。当游戏重新启动时,所有值都设置为初始值,因为没有数据库可获取。我听说过 cocos2d-x 中的 userdefault 但真的找不到执行方式。任何人都可以帮我一个 sample 。我会感谢你

最佳答案

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

const char *HIGH_SCORE="key1";

key1 是一个键,这个键对于你声明的每个 const char * 都必须不同 删除 init 函数中这些行之后的行以返回 true 语句。

if(!CCLayer::init())
{
return false;
}

不要删除return true。然后在你的init函数中写下面的代码

CCUserDefault *def=CCUserDefault::sharedUserDefault();
def->setIntegerForKey(HIGH_SCORE, 2000);
def->flush();

这里 def 是指向 CCUserDefault 的指针,它将有助于访问该类中的所有方法。 SetIntegerForKey 是将相应的整数值设置为常量 char * 的方法。 还有更多函数可以存储字符串、 float 、 bool 值和 double 值。

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

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

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。这意味着现在 HIGH_SCORE 存储在 xml 文件中并从中检索值。因此即使在应用程序关闭后更改仍然存在

关于cocos2d-x - 如何在 cocos2dx (c++) ios 游戏中将数据存储为数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097852/

相关文章:

android - 用于游戏开发的 cocos2d-iphone 或 cocos2d-x?

android - 无法加载游戏 : findLibrary returned null: with cocos2d-x, 尽管尝试了很多次仍未成功?

C++类Classname的使用;

ios - CCParallaxNode 继续前进,convertToWorldSpace 给出错误的值 cocos2d iPhone

android - 无法设置 Cocos2dx [Android、Eclipse、Windows]

ios - Xamarin、C++、Cocos2D-X 和 Visual Studio

c++ - 使用未声明的标识符 c++ xcode

c++ - 如何将我的 AppDelegate 定义为它实例化的类的实例变量?

android - 在我的 iOS 项目中集成 Android 项目

android - 从命令行构建时获取 "package R does not exist"