未检测到 SKSpriteNode 触摸
SKSpriteNode touch not detected
我正在尝试在我的游戏中实现暂停按钮。但是,每次我点击 iOS 设备上的暂停按钮 (SKSpriteNode) 时,什么都没有发生。我尝试让按钮执行其他操作并尝试让其他精灵执行该操作。 None 成功了,尽管我可以触摸屏幕上的任何位置并执行操作。我将 Swift 4 与最新版本的 Xcode (9.4.1) 一起使用。该应用程序是一个 iOS 游戏,我正在使用与该应用程序一起创建的 GameScene.swift。
这是按钮的部分代码(代码中不相关的部分被省略):
import SpriteKit
import CoreMotion
import GameplayKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var pauseButton:SKSpriteNode!
override func didMove(to view: SKView) {
pauseButton = SKSpriteNode(imageNamed: "pauseButton")
pauseButton.size = CGSize(width: 50, height: 50)
pauseButton.position = CGPoint(x: self.size.width -
pauseButton.size.width, y: self.size.height -
pauseButton.size.height)
pauseButton.zPosition = 5
self.addChild(pauseButton)
}
override func touchesEnded(_ touches: Set<UITouch>, with: UIEvent?) {
fireBullet() //This function does not relate to the pause button.
}
override func touchesBegan(_ touches: Set<UITouch>, with event:
UIEvent?) {
let touch = touches.first
if let location = touch?.location(in: self) {
let nodesArray = self.nodes(at: location)
if nodesArray.first?.name == "pauseButton" {
self.view?.isPaused = true
}
}
}
}
提前感谢您花时间回复它真的对我有帮助!
托马斯
轻松修复,在您的 touchesBegan 方法中,您正在搜索名为 "pauseButton" 的节点上的触摸,但没有名为 "pauseButton" 的节点,因此您的搜索 returns 为错误值。
只需将 pauseButton.name = "pauseButton"
添加到您设置暂停按钮的代码中,它应该会起作用。
我正在尝试在我的游戏中实现暂停按钮。但是,每次我点击 iOS 设备上的暂停按钮 (SKSpriteNode) 时,什么都没有发生。我尝试让按钮执行其他操作并尝试让其他精灵执行该操作。 None 成功了,尽管我可以触摸屏幕上的任何位置并执行操作。我将 Swift 4 与最新版本的 Xcode (9.4.1) 一起使用。该应用程序是一个 iOS 游戏,我正在使用与该应用程序一起创建的 GameScene.swift。
这是按钮的部分代码(代码中不相关的部分被省略):
import SpriteKit
import CoreMotion
import GameplayKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var pauseButton:SKSpriteNode!
override func didMove(to view: SKView) {
pauseButton = SKSpriteNode(imageNamed: "pauseButton")
pauseButton.size = CGSize(width: 50, height: 50)
pauseButton.position = CGPoint(x: self.size.width -
pauseButton.size.width, y: self.size.height -
pauseButton.size.height)
pauseButton.zPosition = 5
self.addChild(pauseButton)
}
override func touchesEnded(_ touches: Set<UITouch>, with: UIEvent?) {
fireBullet() //This function does not relate to the pause button.
}
override func touchesBegan(_ touches: Set<UITouch>, with event:
UIEvent?) {
let touch = touches.first
if let location = touch?.location(in: self) {
let nodesArray = self.nodes(at: location)
if nodesArray.first?.name == "pauseButton" {
self.view?.isPaused = true
}
}
}
}
提前感谢您花时间回复它真的对我有帮助! 托马斯
轻松修复,在您的 touchesBegan 方法中,您正在搜索名为 "pauseButton" 的节点上的触摸,但没有名为 "pauseButton" 的节点,因此您的搜索 returns 为错误值。
只需将 pauseButton.name = "pauseButton"
添加到您设置暂停按钮的代码中,它应该会起作用。