Update score in cocos2d daalt framerate

Ik ben een game aan het ontwikkelen waarbij ik de hoogte update die de speler al is kwijtgeraakt. dit is mijn code:

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

maar wanneer ik de lblScore met de huidige score instel, daalt de framerate van 60 fps naar 40 fps + -

Ik test met een iPhone 4.

Als ik de [self.lblScore ... becommentariƫr dan handhaaft de framerate in 60 fps, maar de score is niet bijgewerkt.

Eventuele aanbevelingen?

0

2 antwoord

Uit de cocos2D-documentatie :

Het wijzigen van de tekenreeks is net zo duur als het maken van een nieuw CCLabel. Gebruik CCLabelAtlas voor betere prestaties

Gebruik een CCLabelAtlas om uw prestaties te verbeteren.

0
toegevoegd
Je hebt gelijk, maar de frames verbeterden van 40 fps naar 42 fps, de daling is nog steeds aanzienlijk. Ik kan geen manier vinden om dit te verbeteren.
toegevoegd de auteur gmogames, de bron

Ok, dus hier is wat ik heb gedaan om dit probleem op te lossen.

Ik had een functie die de score elke milliseconde bijwerkte en ja, dat was vreselijk. Dus veranderde ik de score-bijwerking om iets minder te gebeuren.

Ik heb dit toegevoegd aan het .h-bestand

@property (nonatomic,assign) int slowScore;

en dit toegevoegd aan mijn functie in het .m-bestand

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

Door dat te doen was ik in staat om dezelfde score te behouden, maar het wordt bijgewerkte leed-tijden en daardoor blijft mijn framerate aardig op 60 fps :)

+1 tot @jonmorgan voor het voorstellen van de wijziging in CCLabelAtlas.

Ik heb mijn nieuwe code getest met CCLabelTTF en CCLabelAtlas en beide houden de framerate op 60 fps, maar terwijl ik een aantal tests met andere delen van de code uitvoer, presteert CCLabelAtlas veel beter.

0
toegevoegd