ios - SpriteKit如何从另一个场景请求数据

标签 ios sprite-kit skscene

我有 2 个 SKScene。第一个场景有 2 个按钮:男性玩家按钮和女性玩家按钮。第二个场景有两个隐藏图像:一个男性玩家图像和一个女性玩家图像。

如果在 Scene1 中选择了男性玩家,我想让男性玩家图像在 Scene2 中可见,但是我在 之间传递数据时遇到了问题SKScenes。我正在使用 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/

相关文章:

ios - UIViewController 顶部的空白

iphone - 从 CLLocation 数组创建 GPX 文件

android - 如何在混合应用程序上优化静态 Assets

ios - Sprite Kit 加载时间慢

ios - 使用旧的 SKTextureAtlas 或 SpriteAtlas

swift - SpriteKit - 获取 SKSpriteNode 的权重

ios - Crashlytics Framework 未检测到 iOS 上的信息 plist

swift - 如何从 SKScene 获取和更改我的 View Controller 中的变量

ios - 如何正确检测接触和碰撞? Swift iOS SKScene

swift - 在 swift 中使用未解析的标识符 'UITextBorderStyleRoundedRect'