cocos2d中的更新分数降低帧率

时间:2012-06-23 21:18:49

标签: iphone objective-c cocos2d-iphone

我正在开发一款游戏,我可以更新玩家已经离开的高度。这是我的代码:

self.intScore++;
[self.lblScore setString:[NSString stringWithFormat:@"%d", self.intScore]];

但是当我用当前分数设置lblScore时,帧率从60fps下降到40fps + -

我正在使用iPhone 4进行测试。

如果我评论[self.lblScore ...那么帧率保持在60fps,但分数不会更新。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

来自cocos2D documentation

  

更改字符串与创建新的CCLabel一样昂贵。要获得更好的性能,请使用CCLabelAtlas

使用CCLabelAtlas来提高效果。

答案 1 :(得分:0)

好的,这就是我为解决这个问题所做的工作。

我有一个功能,每毫秒更新一次得分,是的,这太可怕了。所以我把分数更新改为少一点。

我将此添加到.h文件

@property (nonatomic,assign) int slowScore;

并将其添加到.m文件中的函数

if(slowScore < 5){
  slowScore++;            
}else if(slowScore == 5){
  self.intScore = self.intScore + 5;
  slowScore = 0;
} 
[self.lblScore setString:[NSString stringWithFormat:@"%d", self.intScore]];

通过这样做,我能够保持相同的分数,但它会更新leed时间,通过这样做,我的帧率保持在60fps:)

+1 @jonmorgan建议更改CCLabelAtlas。

我使用CCLabelTTF和CCLabelAtlas测试了我的新代码,并且都将帧速率保持在60fps,但是在代码的其他部分运行了一些测试,CCLabelAtlas的性能要好得多。