Pause Game

Pause Game

Use paused property in SKView.
Pause means that any actions, any physics, any events stop, We can stop game temporary.

Following code works in Scene

self.scene.view.paused = YES;

With button

We don’t have button UI in Sprite Kit.
Button UI and delegate
Create delegate to communicate with parent Scene.
Handle touch event in button node and call parent method using delegate


@protocol PauseButtonDelegate <NSObject>
- (void)pauseGame;


This class extends SKSpriteNode

@interface PauseButton : SKSpriteNode
@property (nonatomic, weak)id<PauseButtonDelegate> pauseDelegate;
- (instancetype)initWithSize:(CGSize)size;


#import "PauseButton.h"
@implementation PauseButton

- (instancetype)initWithSize:(CGSize)size {
    if(self = [super initWithColor:[UIColor orangeColor] size:size]) {
        self.userInteractionEnabled = YES;
    return self;

#pragma mark - Touch Event Override
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    // Pause game
    if (self.pauseDelegate != nil) {
        [self.pauseDelegate pauseGame];

Toggle operation in Scene

- (void)pauseGame {
    self.scene.view.paused = !self.scene.view.paused;

And add PauseButton in scene(call in initWithSize)

PauseButton *button = [[PauseButton alloc] initWithSize:CGSizeMake(40, 40)];
button.position = CGPointMake(self.frame.size.width - 40, 25);
button.pauseDelegate = self;
[self addChild:button];