タイルのテクスチャを読み込んでテクスチャを画面に表示した後、タイルベースのゲームを作成していて、フレームレートが60から30に低下しました。グーグル・グーグルの時代とさまざまな解決策を試してみたら、私はまだ原因を突き止めることができません。シンプルコードのCocos2dパフォーマンスの問題
問題を特定して理解する。私は、プログラムがロードされたときに、それはランダムな位置で100個のスプライトを表示する単純なプロジェクトを作成し、HellowWorld層で、その後絶対に何もしなかった。
// on "init" you need to initialize your instance
-(id) init
{
if((self=[super init])) {
CCTexture2D *vlo_Texture = [[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"Icon-72.png"]];
CCSprite *vlo_Temp[100];
NSInteger vli_X, vli_Y;
for (NSInteger vli_Counter=0; vli_Counter<100; vli_Counter++)
{
vli_X = arc4random()%480;
vli_Y = arc4random()%320;
vlo_Temp[vli_Counter] = [CCSprite spriteWithTexture:vlo_Texture]; //[CCSprite spriteWithFile:@"Icon-72.png"];
vlo_Temp[vli_Counter].position = ccp(vli_X, vli_Y);
[self addChild:vlo_Temp[vli_Counter]];
}
}
return self;
}
上記のコードは実行のみという事実は衝撃に私を30fpsの。私はこれらのスプライトをリフレッシュするためのタイマーを持っていません。私は(私は仮定?)システムは、単にすべてのスプライトを描画し、何もしてはならないと信じて、私は適用しようとした
:
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
と
if(! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink])
[CCDirector setDirectorType:kCCDirectorTypeMainLoop];
を、彼らはパフォーマンスを改善していないしかし、まったく。私にできることはほかにありますか?
ありがとうございます。
アレックス
OSのバージョンや使用しているデバイスを教えてくれると助けになるかもしれません。 – ader