在我的 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/