我有2 SKScene
秒。第一个场景有2个按钮:男性玩家按钮和女性玩家按钮。第二个场景有2个隐藏的图像:男性玩家图像和女性玩家图像。
如果在Scene1
中选择了男性玩家,我想在Scene2
中显示男性玩家图像,但我在SKScene
之间传递数据时遇到问题。我在Swift中使用Sprite Kit和编程。请指教。
这是我到目前为止所尝试的内容:
// 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)
}
答案 0 :(得分:1)
有几种方法可以做到这一点。以下是使用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)
}
}
答案 1 :(得分:0)
在场景2中代码:
var playerSelected: Scene1()
创建场景1类的新实例,它不提供返回原始场景的链接1.要访问场景1的属性,您需要从场景2传递对它的引用。