gpt4 book ai didi

objective-c - 我如何回到 SpriteKit 中的旧场景?

转载 作者:行者123 更新时间:2023-11-28 07:17:46 25 4
gpt4 key购买 nike

如何转到 SpriteKit 中的旧场景(在 Swift 中)?我在场景 1 中,我暂停了它,然后移至场景 2,我想回到场景 1 并恢复它。我不想再重新创建它。谢谢。

编辑:

所以,我尝试了这个:在 secondScene 类中,我放置了一个 oldScene SKScene 属性和一个计算的 setOldScene 属性:

class SecondScene: SKScene {

var oldScene:SKScene?
var setOldScene:SKScene? {
get { return oldScene }
set { oldScene = newValue }
}

init(size: CGSize) {

super.init(size: size)

/* Setup my scene here */

}}

然后,在 FirstScene 类中(我有一个移动的球),在 touchBegan 方法中我有这个

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */

for touch: AnyObject in touches {

let location = touch.locationInNode(self)

if(self.view.scene.paused) {
self.view.scene.paused = false
}
else {
self.view.scene.paused = true
}

var secondScene = SecondScene(size: self.frame.size)
secondScene.setOldScene = self.scene

if !transition { self.view.presentScene(secondScene, transition: SKTransition.doorsOpenHorizontalWithDuration(2)) ; transition = true }



}
}

但是,当我在 SecondScene 类中调用 self.view.presentScene(oldScene) 时,我移动了头等舱并且我有两个移动的球 :-??

我不能使用类变量,Xcode 还不支持。

最佳答案

我通过在第二个场景中使用公共(public)属性解决了这个问题。然后用它来呈现第一个场景。

所以在第一个场景中,当你想展示第二个场景的时候....

if let scene = SKScene(fileNamed: "SecondScene") as! SecondScene?
{
scene.parentScene = self
self.view?.presentScene(scene)
}

以下代码位于 SecondScene 中。当准备返回第一个场景时,只需调用方法 showPreviousScene()...

public var parentScene: SKScene? = nil

private func showPreviousScene()
{
self.view?.presentScene(parentScene!)
}

关于objective-c - 我如何回到 SpriteKit 中的旧场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704102/

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