【问题标题】:Why am I getting a Thread 1: fatal error in this function [duplicate]为什么我得到一个线程 1:此函数中的致命错误 [重复]
【发布时间】:2020-06-01 19:14:03
【问题描述】:

我在basicTop.run(SK... 行收到以下错误

线程 1:致命错误:在展开可选值时意外发现 nil

我不知道我为什么会得到这个。当我单击模拟器屏幕时收到此错误消息。

class GameScene: SKScene {

    var brickSwitch: SKSpriteNode!
    var basicTop: SKSpriteNode!
    var basicBottom: SKSpriteNode!
    var basicLeft: SKSpriteNode!
    var basicRight: SKSpriteNode!

    override func didMove(to view: SKView) {
        layoutScene()
    }

    func turnBasicTop() {
        basicTop.run(SKAction.rotate(byAngle: .pi/2, duration: 0.25))
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        turnBasicTop()
    }

【问题讨论】:

标签: swift function skaction


【解决方案1】:

检查可选的basicTop是否包含值,

if basicTop != nil {
    basicTop.run(SKAction.rotate(byAngle: .pi/2, duration: 0.25))
}

另外,请在发布基本问题之前尝试阅读文章

https://developer.apple.com/documentation/swift/optional

【讨论】:

  • 我把它改成了: func turnBasicTop() { if basicTop != nil { basicTop.run(SKAction.rotate(byAngle: .pi/2, duration: 0.25)) } } 错误发生了离开,但是当我点击模拟器屏幕时,什么也没有发生。
  • 这是因为对象 'basicTop' 没有任何价值。您必须为 basicTop 赋值。
  • 所以你的意思是我需要设置 var BasicTop 等于一个图像?如果是这样,我该怎么做?我是编程新手,所以对于基本问题,我很抱歉。
  • 类 GameScene: SKScene { var brickSwitch: SKSpriteNode! var basicTop = SKSpriteNode(imageNamed: "Top Side"); var basicBottom:SKSpriteNode! var basicLeft:SKSpriteNode! var basicRight: SKSpriteNode! override func didMove(to view: SKView) { layoutScene() } 所有变量都应该写成 var basicTop
  • 我将 func turnBasicTop() 改回原来的样子,我没有收到任何错误。但是,当我加载模拟器时,图像仍然没有旋转。
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2011-04-22
  • 2011-11-11
  • 1970-01-01
  • 2017-04-18
  • 2022-07-22
  • 1970-01-01
相关资源
最近更新 更多