Я постоянно получаю сообщение об ошибке "Элемент экземпляра isPaused не может использоваться для типа GameScene"

Это код, который у меня есть, и у меня есть кнопка, которая, когда я нажимаю на нее, я хочу приостановить игру, чтобы показать меню... У меня есть комментарии, где появляется ошибка, так что вы можете надеяться увидеть, что я делаю неправильно.

Кроме того, я не уверен, должен ли этот код быть в моем файле GameScene, если нет, не могли бы вы сообщить мне, в каком он должен быть.

Спасибо за попытку помочь.

//
//  GameScene.swift
//  Pong2
//
//  Created by Hussain on 10/11/16.
//  Copyright © 2016 Archetapp. All rights reserved.
//

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    var ball = SKSpriteNode()
    var enemy = SKSpriteNode()
    var main = SKSpriteNode()

    var topLbl = SKLabelNode()
    var btmLbl = SKLabelNode()

    var score = [Int]()

    @IBOutlet weak var pauseBetton: UIButton! // HERE IS MY OUTLET


    override func didMove(to view: SKView) {

        func pauseButton (sender: UIButton){ // HERE'S MY FUNCTION TO TRY AND PAUSE MY GAME
            let pauseAction = SKAction.run {
                GameScene.isPaused = true // HERE'S THE LINE I GET MY ERROR
                debugPrint("Paused")
            }
        }



        topLbl = self.childNode(withName: "topLabel") as! SKLabelNode
        btmLbl = self.childNode(withName: "btmLabel") as! SKLabelNode
        ball = self.childNode(withName: "ball") as! SKSpriteNode

        print(self.view?.bounds.height)

        enemy = self.childNode(withName: "enemy") as! SKSpriteNode
        enemy.position.y = (self.frame.height / 2) - 50

        main = self.childNode(withName: "main") as! SKSpriteNode
        main.position.y = (-self.frame.height / 2) + 50

        let border  = SKPhysicsBody(edgeLoopFrom: self.frame)

        border.friction = 0
        border.restitution = 1

        self.physicsBody = border

        startGame()
    }
}

1 ответ

Решение

isPaused это метод экземпляра, а не метод класса. Вы должны вызвать его в конкретном случае SKNode такой как ваш GameScene пример.

+ Изменить GameScene.isPaused = true в self.isPaused = true или просто isPaused = true

Помимо этого вопроса, вам нужно переместить pauseButton метод изнутри вашего didMove(to:) метод.

func pauseButton (sender: UIButton) {
    let pauseAction = SKAction.run {
        self.isPaused = true
        debugPrint("Paused")
    }
}

override func didMove(to view: SKView) {
    topLbl = self.childNode(withName: "topLabel") as! SKLabelNode
    btmLbl = self.childNode(withName: "btmLabel") as! SKLabelNode
    ball = self.childNode(withName: "ball") as! SKSpriteNode

    print(self.view?.bounds.height)

    enemy = self.childNode(withName: "enemy") as! SKSpriteNode
    enemy.position.y = (self.frame.height / 2) - 50

    main = self.childNode(withName: "main") as! SKSpriteNode
    main.position.y = (-self.frame.height / 2) + 50

    let border  = SKPhysicsBody(edgeLoopFrom: self.frame)

    border.friction = 0
    border.restitution = 1

    self.physicsBody = border

    startGame()
}
Другие вопросы по тегам