单视图应用程序中的 SpriteKit 场景?

Posted

技术标签:

【中文标题】单视图应用程序中的 SpriteKit 场景?【英文标题】:SpriteKit scene in a single view application? 【发布时间】:2021-04-28 18:12:59 【问题描述】:

我正在 Xcode 上使用单视图应用程序格式创建一个迷你游戏应用程序。但是,我希望在其中一个视图中添加一个砌砖游戏——这将极大地受益于 SpriteKit 中的物理特性。我已尝试使用此处提出的上一个问题中的此代码,实现我自己的场景:

let scene = Brick(fileNamed: "Brick")
scene?.scaleMode = .aspectFill
self.view?.presentScene(scene!, transition: SKTransition.flipHorizontal(withDuration: 0.42))

这给了我一个错误,即无论我添加多少导入,UIKit 都不包含“.presentScene”的方法。 我也尝试过使用 SpriteKit 视图,但老实说我不确定它是如何工作的,谷歌也没有提供帮助。 TLDR:如何使用 ViewControllers 和 segues 等将 SpriteKit 场景小游戏放入单个视图应用程序中?

【问题讨论】:

【参考方案1】:

假设你在一个普通的UIViewController 中,那么你的viewUIView 类型,它确实不知道presentScene 方法,它是SKView 的一部分。您必须使用SKView 来展示您的场景。

假设您要添加一个并使其成为视图控制器视图的大小:

let scene = Brick(fileNamed: "Brick")!
scene.scaleMode = .aspectFill
let skView = SKView(frame: view.frame)
view.addSubview(skView)
skView.presentScene(scene, transition: SKTransition.flipHorizontal(withDuration: 0.42))

或者使用 Interface Builder 将 SKView 添加到您的视图控制器 UI,然后将其与 IBOutlet 连接。

【讨论】:

以上是关于单视图应用程序中的 SpriteKit 场景?的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit:在场景之间传递数据

如何在另一个视图控制器中访问 SpriteKit 场景的变量?

SpriteKit 场景未发布

在特定场景中构建 SpriteKit/GameKit 排行榜

在不同的 UIKit 和 SpriteKit 场景中连续播放音频

bundleID、SpriteKit 没有捆绑包