我有 2 个 SKScene
。第一个场景有 2 个按钮:男性玩家按钮和女性玩家按钮。第二个场景有两个隐藏图像:一个男性玩家图像和一个女性玩家图像。
如果在 Scene1
中选择了男性玩家,我想让男性玩家图像在 Scene2
中可见,但是我在 之间传递数据时遇到了问题SKScene
s。我正在使用 Sprite Kit 并在 Swift 中编程。请指教。
到目前为止,这是我尝试过的:
// Scene1:
import SpriteKit
class Scene1: SKScene {
var malePlayer = SKSpriteNode()
var femalePlayer = SKSpriteNode()
var maleSelect = false
var femaleSelect = false
// in touches began..
if self.nodeAtPoint(location) == self.malePlayer {
maleSelect = true
// then i present scene2
} else if self.nodeAtPoint(location) == self.femalePlayer {
femaleSelect = true
//then i present scene2
// in scene 2:
class Scene2: SKScene {
var playerSelected: Scene1()
// did move to view
var boy = SKSpriteNode()
var girl = SKSpriteNode()
if self.playerSelected.maleSelect == true {
self.addChild(boy)
} else if self.playerSelected.femaleSelect == true {
self.addChild(girl)
}
最佳答案
有几种方法可以做到这一点。下面是一个使用 NSUserDefaults
的例子。之所以成为一个不错的选择,原因之一是即使在应用程序关闭后,选择仍会保留,并且可以在下次打开应用程序时重新加载。
要保存选择,请使用以下代码:
if self.nodeAtPoint(location) == self.malePlayer {
//save the selection in NSUserDefaults
NSUserDefaults.standardUserDefaults().setBool(true, forKey:"maleSelected")
//present next scene
} else if self.nodeAtPoint(location) == self.femalePlayer {
//save the selection
NSUserDefaults.standardUserDefaults().setBool(false, forKey:"maleSelected")
//present next scene
}
该值现在保存在本地存储中。当您需要在其他场景中访问选择时,从 NSUserDefaults
中获取值:
所以 Scene2
可能看起来像这样:
class Scene2: SKScene {
var playerSelected: Scene1()
// did move to view
var boy = SKSpriteNode()
var girl = SKSpriteNode()
//grab the selection value
let maleSelected = NSUserDefaults.standardUserDefaults().boolForKey("maleSelected")
if maleSelected == true {
self.addChild(boy)
} else {
self.addChild(girl)
}
}
关于ios - SpriteKit如何从另一个场景请求数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488419/