Я постоянно получаю сообщение об ошибке "Элемент экземпляра 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()
}