0

高分根本没有留在屏幕上,所以最大的问题是我该怎么做,所以分数会一直留在屏幕上,直到被超过,并且会像高分一样更新分数。

几天前我听取了另一位用户的建议,这看起来很简单,但是当我尝试这样做时却没有成功。我尝试了几乎所有不同类型的组合,没有豆子。所以看起来我需要有人帮助指出错误。

在里面

 _oldScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"score"]; 
 CGSize winSize = [[CCDirector sharedDirector] winSize];
    self.scoreLabel = [CCLabelTTF labelWithString:@"" dimensions:CGSizeMake(100, 50) alignment:UITextAlignmentRight fontName:@"Marker Felt" fontSize:32];
    _scoreLabel.position = ccp(winSize.width - _scoreLabel.contentSize.width, _scoreLabel.contentSize.height);
    _scoreLabel.color = ccc3(255,0,0);
    [self addChild:_scoreLabel z:1];     

执行

 if (_score > _oldScore) {
      [[NSUserDefaults standardUserDefaults] setInteger:_score forKey:@"score"];          
       [_scoreLabel setString:[NSString stringWithFormat:@"score%d", _score]];

到目前为止,它运行良好,除了 oldscore 之外的所有内容都不会留在屏幕上。我想让玩家知道高分是多少。用户说使用不同的密钥创建一个新的 nsuserdefaults 来存储旧分数。这样,得分最高的旧分数将保留在屏幕上。

4

1 回答 1

0

// 优先保存分数

int highScore  = yourGameScore;
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore] forKey:@"score"];
[[NSUserDefaults standardUserDefaults] synchronize];

// 从首选项中获取保存的值

highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] intValue ];

//给你的cocos2d标签设置分数值

[_scoreLabel setString:[NSString stringWithFormat:@"%d", _oldScore]];
于 2012-07-10T04:17:52.943 回答