0

ここで説明したのとまったく同じ問題がありますが、提案された解決策は機能しません。つまり、シーン間を遷移するとき、プレゼンティーの読み込みに時間がかかりすぎるため、その間の遷移は完全にスキップされます。現在、シーンのすべてのコンテンツを適切にプリロードする方法を探しています。私がすることは:

  1. アプリケーションの起動時にシーンを割り当て/初期化する
  2. その後、シーンを構成するすべてのテクスチャをプリロードします
  3. 数秒後、シーンを提示します。

トランジションが初めてトリガーされたときは常にスキップされ、その後の試行はすべて期待どおりに機能します。

以下は、(起動時に) シーンを割り当て/初期化してプリロードする方法の例です。

self.menuScene = [[LEMenuScene alloc] initWithSize:self.bounds.size];
[self.menuScene preload];

それによりpreload、SKScene のカテゴリです。

- (void) preload {
    NSMutableArray* allTextures = [[NSMutableArray alloc] init];
    [self enumerateChildNodesWithName:@"//SKSpriteNode" usingBlock:^(SKNode *node, BOOL *stop) {
        SKTexture* texture = ((SKSpriteNode*)node).texture;
        if (texture) [allTextures addObject: texture];
    }];

    [SKTexture preloadTextures:allTextures withCompletionHandler:^{
        //nop
    }];
}

ロードが非同期で実行され、preloadすぐに返されることを認識しているため (これは意図されています)、ロードが完了する前に遷移を引き起こす可能性がありますが、どれだけ待っても関係なく、常に遅れます。

ヒント/ヘルプは大歓迎です!

4

1 に答える 1

0

結局、問題はテクスチャではなかったことが判明しました。フォント名のつづりを間違えたため、システムが適切な代替を探し、遅延が発生しました。

同じ問題があります: SKLabelNode フォントをキャッシュまたはプリロードする方法は?

于 2015-08-07T09:53:09.363 に答える