2017-01-16 20 views
1

実行時に例外例外エラーが発生し、問題が発生した理由を説明できません。SKSpriteNodeオブジェクトの初期化時に例外がありません

まず私はこの

var destinationSign: SKSpriteNode? 

ようSKSpriteNodeオブジェクトを宣言し、後で私は異なる機能を持っている後に、この

func showDestination(x: CGFloat, y: CGFloat){ 
    destinationSign = SKSpriteNode(fileNamed: "sign_1") 
    destinationSign?.position.x = x 
    destinationSign?.position.y = y 
    addChild(destinationSign!) 
} 

のようなこのSpriteNodeを作成し、このshowDestination機能をトリガー関数を定義します

showDestination(x: 20 , y: 40) 

誰でも説明がありますか?この行動は? addChildが呼び出されたときに

+1

letが使用され、destinationSignがまったく初期化されているかどうかを確認します。または、ブレークポイントを設定し、問題のあるスプライトを検査するだけです – Whirlwind

答えて

0

がdestinationSignのように見える、事前に

おかげではnilです。 (追加されませんが、ノードを覚えている)

if let node = destinationSign as SKSpriteNode { 
self.addChild(node) 
} 

をnilの例外を防ぐために:あなたも試してみてください

...など、それを初期化するために使用された画像の名前を確認し、大文字、アンダースコア倍増すべきです

あなたのように、他のコンテキストで使用することができ、より一般的な機能を、使用することも検討する必要があります。

func show (_ node: SKSpriteNode, at point: CGPoint) { 

    node = SKSpriteNode(fileNamed: "sign_1") 

    if let node = node as SKSpriteNode { 
     node.position.x = point.x 
     node.position.y = point.y 
     addChild(node) 
    } 
} 

しかし、これらのソリューションは、GI単に理論です事実上になりたい場合は、あなたのスプライトがシーンに追加されていない場合はエラーとなります。

関連する問題