拥有单个视图控制器和多个场景
您可以使用单视图控制器(这实际上是 SpriteKit 游戏模板的默认状态)并拥有多个场景。
所以你会有GameViewController
and LandingScene
, GameScene
以及可能的其他一些场景,例如LevelSelect
场景或类似的东西。
In GameViewController
,您第一次初始化场景。这就是你初始化你的点LandingScene
(我猜那是您实现导航菜单的地方)。
因此,从那时起,您可以使用任何您想要的场景进行转换SKView's
目前场景:方法(并且可选地使用SKTransition
class).
过渡
过渡于SpriteKit
通常可以通过两种不同的方式完成:
1.有些人可能会告诉您,从当前场景到下一个场景的转换是一个“糟糕的设计”,当前场景应该通知视图控制器其准备转换状态,以便视图控制器可以进行所需的转换。但作为回应,这些是来自文档的引用:
在两个场景之间转换
通常,您会根据游戏玩法或用户切换到新场景
输入。例如,如果用户按下主菜单中的按钮
场景,您可能会转换到新场景配置匹配
玩家想要玩。
以及相关代码:
- (void)mouseUp:(NSEvent *)theEvent
{
[self runAction: self.buttonPressAnimation];
SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0];
GameConfigScene *newScene = [[GameConfigScene alloc] initWithSize: CGSizeMake(1024,768)]];
[self.scene.view presentScene: newScene transition: reveal];
}
可以清楚地看到,到下一个场景的过渡是在当前场景内完成的。
2.使用上述使用委托模式的方法,其中场景将转换的责任委托给视图控制器。
两种方法都很好,其中第一种方法在我看来有点方便,并且被广泛使用。这就是您如何在不同场景之间导航SpriteKit
以一种简单的方式。
Hint:
不要忘记覆盖场景dealloc
(or deinit
如果您在开发阶段使用 Swift) 方法,以确保所有场景都正确释放。