ここで説明したのとまったく同じ問題がありますが、提案された解決策は機能しません。つまり、シーン間を遷移するとき、プレゼンティーの読み込みに時間がかかりすぎるため、その間の遷移は完全にスキップされます。現在、シーンのすべてのコンテンツを適切にプリロードする方法を探しています。私がすることは:
- アプリケーションの起動時にシーンを割り当て/初期化する
- その後、シーンを構成するすべてのテクスチャをプリロードします
- 数秒後、シーンを提示します。
トランジションが初めてトリガーされたときは常にスキップされ、その後の試行はすべて期待どおりに機能します。
以下は、(起動時に) シーンを割り当て/初期化してプリロードする方法の例です。
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
すぐに返されることを認識しているため (これは意図されています)、ロードが完了する前に遷移を引き起こす可能性がありますが、どれだけ待っても関係なく、常に遅れます。
ヒント/ヘルプは大歓迎です!