0

プレイヤーがすでに行った高さを更新するゲームを開発しています。これは私のコードです:

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

しかし、現在のスコアでlblScoreを設定すると、フレームレートが60fpsから40fpsに低下します+-

私はiPhone4でテストしています。

[self.lblScore ...にコメントすると、フレームレートは60 fpsで維持されますが、スコアは更新されません。

何かお勧めはありますか?

4

2 に答える 2

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]];

そうすることで、同じスコアを維持することができましたが、リード時間が更新され、それを行うことで、フレームレートが60fpsで良好に保たれます:)

CCLabelAtlasへの変更を提案してくれた@jonmorganに+1。

新しいコードをCCLabelTTFとCCLabelAtlasでテストし、どちらもフレームレートを60 fpsに維持しましたが、コードの他の部分でいくつかのテストを実行すると、CCLabelAtlasのパフォーマンスが大幅に向上しました。

于 2012-06-25T01:49:18.453 に答える
0

cocos2Dドキュメントから:

文字列の変更は、新しいCCLabelを作成するのと同じくらい費用がかかります。より良いパフォーマンスを得るには、CCLabelAtlasを使用してください

を使用しCCLabelAtlasてパフォーマンスを向上させます。

于 2012-06-23T21:50:23.400 に答える