SpriteKit暂停恢复错误
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
let touchLocation = touch!.location(in: self)
if continueButton.contains(touchLocation) {
scene?.view?.isPaused = false
pauseMenu.removeFromParent()
self.addChild(pauseButton)
self.addChild(upButton)
continueButton.removeFromParent()
}
}
我有一个线程1:信号SIGABRT错误时触摸结束继续按钮。我发现的一点是,如果我在触摸中声明了精灵(继续按钮),那么按钮不会被删除,但是,当我在继续按钮精灵之外声明继续按钮时,继续按钮将被删除。问题是,有时候应用程序只会显示线程1错误。任何想法,我怎样才能停止崩溃?SpriteKit暂停恢复错误
class GameScene: SKScene {
var mainturret = SKSpriteNode(imageNamed: "Main Turret")
var pauseButton = SKSpriteNode(imageNamed: "Pause Simbol")
var angleToShoot = 0
var touchIsOn = 0
var pointTwoSecondInterval = 0
let pauseMenu = SKSpriteNode(imageNamed: "Paused")
var zombieSpawningTimer = Timer()
var upButton = SKSpriteNode(imageNamed: "Up Button")
let downButton = SKSpriteNode(imageNamed: "Down Button")
let popUpMenu = SKSpriteNode(imageNamed: "TurretSpot")
var continueButton = SKSpriteNode(imageNamed: "Continue")
...}
这就是按钮被声明(功能外)上的代码的第三行发生
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
错误。 这是电脑告诉我的。
2017年6月30日07:32:26.053429-0600生存的夜晚[4635:1030550] * 终止应用程序由于未捕获的异常 'NSInvalidArgumentException' 的,原因:Attemped”添加SKNode其中 已经有一个父项:name:'(null)' texture:['Up Button'(200 x 200)] position:{0,-254} scale:{0.57,0.57} size:{56.800003051757812,56.800003051757812} 锚点:{0.5,0.5}轮转:0.00' *第一次调用堆栈:(0x188da6fd8 0x187808538 0x188da6f20 0x1984f1738 0x1984f1664 0x100073d40 0x100074908 0x1984d7050 0x18ef0a46c 0x18 ef05804 0x18eed6418 0x18f6cff64 0x18f6ca6c0 0x18f6caaec 0x188d55424 0x188d54d94 0x188d529a0 0x188c82d94 0x18a6ec074 0x18ef3b130 0x100078c5c 0x187c9159c)的libC++ abi.dylib: 类型的未捕获的异常终止NSException
的原因是因为要添加upButton
两次作为一个孩子到某个节点。
最可能的是,touchesEnded
方法中的行self.addChild(upButton)
正在引发此问题。此时,请验证nil
中的upButton.parent
。如果没有,你的代码中有一个逻辑错误。
你需要发布更多的代码,你的其中一个按钮不存在,并且正在读取为零 – Knight0fDragon
我已经添加了一些上下文到代码中,并显示了变量已被声明的位置,因为这是我认为是我的问题的来源。希望这是足够的:) –
等待,你使用现场套件? – Knight0fDragon