多くのユニークなユニットを持つゲームがあり、各ユニットには独自のスプライト シートがあります (各ユニットには複数のアニメーションがあるため)。ユニットを含むシーンが作成されると、これらすべてのアセットの初期化に多くの時間がかかります (数秒)。具体的には、このコードの実行中は UI がロックされます。
NSString *unitSheetName = [self getUnitSheetName];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:unitSheetName];
CCSprite *frame = [CCSprite spriteWithSpriteFrameName:kDefaultFrameName];
// etc...
ただし、次にpop
シーンを作成し、同じシーン (およびpush
それ) の新しいバージョンを作成すると、ロードにかかる時間はわずかになります (UI はロックされません)。したがって、UI のロックは、スプライト シートの初期キャッシュが原因のようです...
ゲームの起動中にCCSpriteFrameCache
'sメソッドを呼び出すことで、この遅延を回避できることを願っていましたが、これはうまくいかないようです。addSpriteFramesWithFile
これを行っているにもかかわらず、初期ロードにはまだ長い時間がかかります。
アセットをプリロードする効果的な方法はありますか? シーンがプッシュされたときに後で UI がロックされないことを確認できれば、スタートアップの読み込み画面に 1、2 秒追加してもかまいません...