ios - SpriteKit项目中如何检测当前场景

标签 ios swift sprite-kit skscene

在我的 SpriteKit 应用程序中,我有 3 个不同的场景,我想为每个场景设置特定的设置。 我的意思是我想在 MainPage 和 SomeInfoScene 中设置可见的 AdBanner,但不在 GameScene 中。我怎样才能做到这一点? 这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    if let view = self.view as! SKView? {

        let mainPage = SKScene(fileNamed: "MainPage")!
        mainPage.name = "MainPage"

        let someInfoPage = SKScene(fileNamed: "SomeInfoScene")!
        someInfoPage.name = "SomeInfoScene"

        let gameScene = SKScene(fileNamed: "GameScene")!
        gameScene.name = "GameScene"

        view.presentScene(mainPage)

        if let currentScene = view.scene {

            if currentScene.name == mainPage.name {

                print("MainPage")
                adBannerView.isHidden = false
            }
            if currentScene.name == someInfoPage.name {

                print("SomeInfoScene")
                adBannerView.isHidden = false
            }
            if currentScene.name == gameScene.name {

                print("GameScene")
                adBannerView.isHidden = true
            }
        }
     }
  }

最佳答案

这由 scene 跟踪SKView 的属性(property)类(class)。例如:

if let view = self.view as? SKView {
    if let currentScene = view.scene {
        print("Current scene is: \(currentScene)")
    else {
        print("Current scene is nil")
    }
}

顺便说一句,你的第一行真的应该是:

if let view = self.view as? SKView { ...

这是在 if 语句中尝试向下转换的标准/惯用方法。


更新。您还需要设置 name属性,如果您打算在您的游戏代码中使用它(在 *.sks 文件中直接在您的代码中)。例如:

let scene = SKScene(fileNamed: "MainPage")!
scene.name = "MainPage"
view.presentScene(scene)

关于ios - SpriteKit项目中如何检测当前场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891870/

相关文章:

ios - 如何打开 UIWebview 并全屏播放视频并强制横向播放?

ios - 从 UILabel Swift 中获取一个 Int

android - 使用 Firebase Analytics for mobile app(iOS 和 Android)进行事件日志和比较

ios - Swift - iOS 11 翻译

swift - 使一个移动的物理体与他人发生碰撞而自身不受影响

Swift Sprite 套件 SKPhyshicsBody

iphone - 监视区域但位置图标在应用程序被杀死时消失

swift - 从Optional中检索值

ios - Sprite Kit 背景滚动垂直

swift - 核心图像和内存泄漏,swift 3.0