1

我有一个用 Swift 编写的非常简单的 SpriteKit 游戏,其中有两个场景,我试图在它们之间进行转换。此代码完美运行:

let skView = self.view as SKView

let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill

//This line shows the new scene immediately (as expected)
skView.presentScene(scene) 

当我用以下代码替换上面的代码行时,问题就来了:

let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)

当我这样做时,什么也没有发生(当前场景仍然在屏幕上)。我尝试了几种不同的过渡,但总是得到相同的结果。

有什么想法吗?

4

2 回答 2

1

解决了。

事实证明,上面的代码没有任何问题。问题是我试图根据特定 SKPhysicsBody 的位置在更新函数中执行它。转换不会立即发生,因此它有时间让 update 被反复调用,这会一遍又一遍地重新触发转换。这导致过渡从未发生。

解决方法是添加一个布尔值来检查我是否已经开始转换,所以我只尝试一次。

于 2014-08-09T17:48:38.153 回答
0

如果其他人遇到这种情况,您可能还想暂停传出场景。其中的一些逻辑可能正在改变状态或干扰转换。

尝试设置

  transition.pausesOutgoingScene = YES;

看看是否有帮助,

如果这是您的意图,可以将其用作解决方案,或者设置断点(update:在创建转换后尝试)并查看发生了什么。

于 2014-09-18T22:15:59.603 回答