gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:57:16 25 4
gpt4 key购买 nike

我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com