【发布时间】:2014-05-13 07:49:49
【问题描述】:
我正在使用 cocos2d-x 在 xcode 中开发游戏。我想在游戏结束场景中显示高分。当我运行游戏时,即使分数低于高分,分数也会显示在游戏结束场景中而不是高分中。我认为不存储高分。我正在使用以下代码。请帮我解决这个问题。
CCUserDefault *def=CCUserDefault::sharedUserDefault();
long int high_score=0;
if(score>high_score)
{
def->setIntegerForKey(HIGH_SCORE, score);
//def->flush();
//high_score=def->getIntegerForKey(HIGH_SCORE);
}
else if(score<high_score)
{
def->setIntegerForKey(HIGH_SCORE, high_score);
//def->flush();
//high_score=def->getIntegerForKey(HIGH_SCORE);
}
high_score=def->getIntegerForKey(HIGH_SCORE);
char s[7];
sprintf(s,"%ld", high_score);
CCLabelTTF *high_label=CCLabelTTF::create(s, "Arial.fnt", 20);
high_label->setPosition(ccp(winwsize - 800, winhsize - 50));
this->addChild(high_label,2);
【问题讨论】:
-
所以
high_score总是初始化为0?也许将其设为静态或使用成员而不是局部变量。 ;) -
您好,感谢您的评论,我将 high_score 变量声明为类成员并删除 score
-
这仅与变量间接有关。您必须将值保存在文件或数据库中。也许创建一个txt文件,保存分数并在启动程序时读取它,并在退出时将值保存在文件中。