Iphone 更新cocos2d中的分数降低帧率

Iphone 更新cocos2d中的分数降低帧率,iphone,objective-c,cocos2d-iphone,Iphone,Objective C,Cocos2d Iphone,我正在开发一款游戏,更新玩家已经达到的高度。这是我的代码: self.intScore++; [self.lblScore setString:[NSString stringWithFormat:@"%d", self.intScore]]; 但是当我用当前分数设置lblScore时,帧速率从60fps下降到40fps+- 我正在用iPhone4进行测试 如果我对[self.lblScore]进行注释,则帧速率保持在60fps,但分数不会更新 有什么建议吗?来自: 更改字符串与创建新的CCL

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

self.intScore++;
[self.lblScore setString:[NSString stringWithFormat:@"%d", self.intScore]];
但是当我用当前分数设置lblScore时,帧速率从60fps下降到40fps+-

我正在用iPhone4进行测试

如果我对[self.lblScore]进行注释,则帧速率保持在60fps,但分数不会更新

有什么建议吗?

来自:

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


使用
cclabelalas
来提高性能。

好的,下面是我为解决此问题所做的工作

我有一个每毫秒更新一次分数的函数,是的,那太糟糕了。所以我把分数更新的次数改得少一点

我把它添加到了.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]];
if(slowScore<5){
slowScore++;
}否则如果(slowScore==5){
self.intScore=self.intScore+5;
slowScore=0;
} 
[self.lblScore设置字符串:[NSString stringWithFormat:@“%d”,self.intScore]];
通过这样做,我能够保持相同的分数,但它得到了leed的更新次数,通过这样做,我的帧速率保持在60帧/秒:)

+1致@jonmorgan,感谢他建议变更CCLABELALAS


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

你说得对,但是帧从40fps提高到42fps,降幅仍然很大。找不到改进的方法。