在 cocos2d 中更新分数会降低帧速率



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

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

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

我正在用iPhone 4进行测试。

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

有什么建议吗?

来自 cocos2D 文档:

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

使用CCLabelAtlas来提高效果。

好的

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

我有一个函数,每毫秒更新一次分数,是的,这很糟糕。所以我更改了分数更新,以减少发生。

我将其添加到 .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]];
通过这样做,

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

+1 到 @jonmorgan 建议更改为 CCLabelAtlas。

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

最新更新