我正在开发一款游戏,我更新玩家已经离开的高度。 这是我的代码:
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的性能要好得多。