bugfix> ios > 投稿

Ball という名前のカスタムクラスがあります GameScene.sks のスプライト :

GameScene.sks:

var ball:Ball!
override func didMove(to view: SKView) {
    ball.setUp()
    addChild(ball)
}

Ball.swift:

import Foundation
import SpriteKit
class Ball: SKSpriteNode {
     func setUp() {
         self.texture = SKTexture(imageNamed: "ball")
    }
}

ただし、次のエラーがスローされます: Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value 誰か助けてもらえますか?ありがとう

回答 1 件
  • 問題は、実際に ball に値を割り当てないことです 、これは暗黙的にラップされていないオプションなので、 ball.setUp() を使用してアクセスしようとするとき 、そのデフォルトの nil  値は強制的にアンラップされます。

    texture を直接変更する代わりに  あなたの SKSpriteNode の財産  サブクラスは、指定された初期化子 Ball(imageNamed: "ball") を呼び出すだけです  ノードをインスタンス化します。

    だから GameScene.sks を変更する  したがって:

    override func didMove(to view: SKView) {
        ball = Ball(imageNamed: "ball")
        addChild(ball)
    }
    
    

あなたの答え