SpriteKit: Предварительно загрузите звуковой файл в память перед воспроизведением?

Просто интересно, возможно ли это. В первый раз, когда я запускаю звуковой файл во время работы приложения, заметна задержка до того, как звук действительно воспроизводится (например, он кэширует его или что-то еще). После этого он воспроизводится мгновенно без проблем, но если я полностью закрываю приложение и перезапускаю его, задержка будет возвращена при первом воспроизведении звука. Вот код, который я использую для воспроизведения звука:

[self runAction:[SKAction playSoundFileNamed:@"mySound.caf" waitForCompletion:NO]];

Ответы

Ответ 1

Один из подходов, который вы можете предпринять, - загрузить звук в начале в начале сцены:

YourScene.h:

@interface YourScene : SKScene
@property (strong, nonatomic) SKAction *yourSoundAction;
@end

YourScene.m:

- (void)didMoveToView: (SKView *) yourView
{
    _yourSoundAction = [SKAction playSoundFileNamed:@"yourSoundFile" waitForCompletion:NO];
    // the rest of your init code
    // possibly wrap this in a check to make sure the scene only initiated once...
}

Это должно предустановить звук, и вы сможете запустить его, вызвав действие на вашей сцене:

[self runAction:_yourSoundAction];

Я пробовал это сам в ограниченном сценарии и, похоже, избавился от задержки.