如何在SpriteKit

时间:2016-07-20 18:42:15

标签: ios sprite-kit skscene

我有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)
}

2 个答案:

答案 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传递对它的引用。