【问题标题】:Not appearing all level after SKTransitionSKTransition 后未出现所有级别
【发布时间】:2014-11-25 01:35:45
【问题描述】:

我正在尝试在游戏菜单和第一级之间进行转换。 但不是所有的Level1(它是通过使用Level1.sks文件(这里我设计了一个关卡)Level1.swift(这里我创建了我的“英雄” etc.)) 屏幕上只显示英雄,但没有在 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

        }

【问题讨论】:

  • 您需要先使用 NSKeyedUnarchiver 解压 SKS 文件

标签: ios swift sprite-kit sktransition


【解决方案1】:

您需要将 sks 文件解压缩到 SKScene 对象中,以便可以将文件中的元素加载到场景中。

XCode 通常会在 SKScene 的 .swift 文件中生成一个名为 unarchiveFromFile 的方法。

以下代码应该可以工作:

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
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 2019-03-24
    • 2015-02-24
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    相关资源
    最近更新 更多