Нужна помощь для включения "Выбор преформы: WithObject: AfterDelay:" с приостановкой SKScene

Мне нужна помощь с включением

PreformSelector: WithObject: AfterDelay:

С SKScene в режиме паузы. Я делаю игру, в которой есть кнопка паузы, которая останавливает сцену. Это, однако, не влияет на

PreformSelector: WithObject: AfterDelay:

функция, которая вызывает функцию "Перезагрузить". Без этого пользователь может сделать снимок, нажать "Пауза", дождаться вызова функции перезагрузки, снять паузу и произвести съемку. Это позволяет пользователю непрерывно стрелять без перезагрузки в "игровое время". Есть ли способ это исправить?

1 ответ

Решение

Вы не должны использовать performSelector:withObject:afterDelay:потому что отслеживать время и хранить селекторы, объекты и т. д. с помощью этого метода было бы очень громоздко.

Вместо этого используйте SpriteKit's +[SKAction waitForDuration:] действие.

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

// Replace 2.0 below with however long you want to wait, in seconds
SKAction *waitAction = [SKAction waitForDuration:2.0];

// I'm assuming your "Reload" method is a method declared in your scene's
// class and not some other class, so I'm using "self" as the target here.
SKAction *reloadAction = [SKAction performSelector:@selector(Reload) onTarget:self];

SKAction *sequenceAction = [SKAction sequence:@[waitAction, reloadAction]];

// Since I'm assuming this is in your scene implementation, `self` here
// refers to your scene node.
[self runAction:sequenceAction];

Поскольку действия могут быть приостановлены и возобновлены, когда вы приостанавливаете свою сцену с self.paused = YES; Ваши действия также будут приостановлены и возобновлены с того места, на котором они остановились, когда вы позже приостановите свою сцену.

Другие вопросы по тегам