-1

ゲームメニューと最初のレベルの間の移行を試みています。ただし、すべての Level1 ( Level1.sks ファイル (ここではレベルを設計しました)Level1.swift (ここでは「ヒーロー」などを作成しました) を使用して構築されます) の代わりに、画面にはただのヒーローが表示されますが、何も表示されません。 Level1.sks で設計された場所。

この問題を解決するにはどうすればよいですか?

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)

        if (playbutton .containsPoint(location)){

            runAction(SKAction.playSoundFileNamed("play.wav", waitForCompletion: false))


            let transition = SKTransition.revealWithDirection(SKTransitionDirection.Down, duration: 1)
            let scene = Level1(size: CGSizeMake(1024, 768))
            scene.scaleMode = SKSceneScaleMode.AspectFill
            self.scene?.view?.presentScene(scene, transition: transition)
            transition.pausesOutgoingScene = true

        }
4

1 に答える 1

1

ファイルの要素をシーンにロードできるように、sks ファイルを SKScene オブジェクトに解凍する必要があります。

XCode は通常unarchiveFromFile、SKScene の .swift ファイルで呼び出されるメソッドを生成します。

次のコードが機能するはずです。

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)

        if (playbutton .containsPoint(location)){

            runAction(SKAction.playSoundFileNamed("play.wav", waitForCompletion: false))

            if let scene = Level1.unarchiveFromFile("GameScene") as? GameScene {

                let transition = SKTransition.revealWithDirection(SKTransitionDirection.Down, duration: 1)
                scene.scaleMode = SKSceneScaleMode.AspectFill
                self.scene?.view?.presentScene(scene, transition: transition)
                transition.pausesOutgoingScene = true
            }
        }
    }
}
于 2014-11-25T11:57:13.647 に答える