2

私は現在、iOS の Sprite Kit をいじって、比較的単純な 2D ゲームを作成するのに適したフレームワークであるかどうかを判断しています。

私の ActionScript バックグラウンドのおかげで、Sprite Kit をコード的に扱うことに非常に慣れています。

ただ、どうしても解らないことがあります。リソースとして Texture Atlas を使用するアニメーション化されたノードは、非常にメモリを大量に消費します。プロジェクトにアトラスをインポートしました (テクスチャのサイズは約 35MB です)。テクスチャを RAM にプリロードしても問題ないように見えますが、実際のアニメーションを実行すると、ヒープ サイズが指数関数的に増加します (約 80MB から 780MB に)。

ここに私のコードがあります:

self.noahFrames = [[NSMutableArray alloc] init];
SKTextureAtlas *noahAtlas = [SKTextureAtlas atlasNamed:@"noahAnimati"];

int imgCount = noahAtlas.textureNames.count;
for (int i=1; i <= imgCount; i++) {
    NSString *textureName = [NSString stringWithFormat:@"NoahMainMenuAnimation_%d", i];
    SKTexture *temp = [noahAtlas textureNamed:textureName];
    [self.noahFrames addObject:temp];
}


SKSpriteNode *noahNode = [self createSpriteWithName:@"noah" imagePath:@"Noah_main_menu_hd" positionXPath:@"MainMenu.Noah.x" positionYPath:@"MainMenu.Noah.y" scalePath:@"MainMenu.Noah.scale"];
[self addChild:noahNode];

//up to this point everything goes fine

[noahNode runAction:[SKAction repeatActionForever:
                     [SKAction animateWithTextures:self.noahFrames
                                      timePerFrame:0.1f
                                            resize:YES
                                           restore:YES]] withKey:@"animatedNoah"];

だから私の実際の質問は、SKActionアニメーションを呼び出した後、アプリケーションが非常にメモリを大量に消費するのはなぜだと思いますか? 私はかなり明白な何かを見逃しているに違いない...

4

1 に答える 1

0

テクスチャがグラフィック メモリに読み込まれると、圧縮なしで読み込まれることは知っていますが、xcode がグラフィック メモリを監視しているとは思わないので、私には本当に奇妙です。私は通常、あなたと同じようにアニメーションをロードして実行しますが、そのようなメモリ動作はありませんが、シミュレーターでテストしているときに気づきました。テストに iOS シミュレーターを使用していますか? それらのメモリ レベルに達すると、アプリケーションがクラッシュしますか?

于 2013-11-12T17:06:12.190 に答える