如何使用 swift 使用带有 spriteKit 的情节提要

Posted

技术标签:

【中文标题】如何使用 swift 使用带有 spriteKit 的情节提要【英文标题】:How do I use storyboards with spriteKit using swift 【发布时间】:2015-03-11 02:17:05 【问题描述】:

我使用 Xcode 而不是其他应用程序来制作 ios 应用程序的主要原因之一是故事板界面构建器。当我发现您不打算将情节提要与 spriteKit 一起使用时,我很不高兴。如果没有一个好的视觉构建器,我发现很难为游戏菜单设计一个漂亮的界面。有没有办法使用故事板启动 spriteKit 应用程序,然后单击“开始游戏”按钮,切换到 spriteKit 场景,然后当你输掉游戏时,在代码中切换回故事板(使用 swift)?请帮忙,谢谢。

-卡勒姆-

【问题讨论】:

【参考方案1】:

SpriteKit 场景呈现在 SKView 的实例上,它是 UIView 的子类。

对于使用 SpriteKit 制作的 iOS 游戏,需要在 App 委托或情节提要中以编程方式设置至少一个 viewController,在其上可以显示 SKScene。 SKScene 将在这个 VC 的主视图中呈现。

因此,如果您使用情节提要,iOS 游戏将必须从其中实例化根 viewController。您可以轻松地在 viewController 上设计 UI,并通过按下按钮的代码呈现游戏,无论是在同一个 viewController 中还是在新的 viewController 中。一旦您阅读了使用 Swift 的 SpriteKit 初学者教程,例如this,所有这些都会很明显。

假设你的根 viewController 有你的主菜单(在另一个名为 menuView 的视图上),上面有一个播放按钮。现在按一个按钮呈现一个游戏应该是这样的:

class MyViewController: UIViewController 
  @IBOutlet wear var menuView: UIView?
  @IBOutlet weak var playButton: UIButton?

  @IBAction func likedThis(sender: UIButton) 
    //Hide the menu view
    menuView.hidden = true

    //instantiate and present the scene on the main view
    let scene = MyScene(size: view.bounds.size)
    let skView = self.view as SKView
    skView.presentScene(scene)
  

至于从场景回到主菜单,看看这个answer。

【讨论】:

以上是关于如何使用 swift 使用带有 spriteKit 的情节提要的主要内容,如果未能解决你的问题,请参考以下文章

将 AcceptMouseMovedEvents 用于带有 Storyboard 和 Swift 的 SpriteKit 鼠标操作

这个带有 SpriteKit 代码的 Swift 没有达到预期的效果

Swift SpriteKit:创建逼真的 2D 驾驶体验

如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中

iOS Swift SpriteKit:如何使子精灵节点的位置和动作与其父精灵节点相同?

如何在 Swift Playgrounds 中使用带有纹理的 SKNode 设置 SKScene?