ios - 展开 segue 以查看包含 SpriteKit 的 SKView 的 Controller 非常慢

标签 ios iphone sprite-kit

我刚刚开始使用 SpriteKit,这个问题很快就出现了。如果我有一个 View Controller ,其 View 是一个 SKView,将另一个 View Controller 推到它上面(例如,一个暂停菜单或一个结束游戏菜单),然后使用 SKView 返回到 View Controller 会花费大量时间,根据我在 4S 和 5 上的经验,大约需要一秒半。

您可以使用默认的 Hello World 模板对此进行测试。我将它设置为导航 View 的根 Controller ,并在导航栏中插入一个按钮以触发对新 View Controller 的推送切换。第二个 View Controller 包含一个按钮,可触发展开转场。当按钮被按下时,它会高亮显示大约一秒半,然后最后会发生 segue,这对用户来说非常不和谐。

我浏览了 SpriteKit 文档,没有注意到任何关于正确使用 segues 的文章,这只是一个错误,还是将新 View 推送到 SKView 之上被认为是不好的做法?相反,我是否应该使用 SKNodes/SKScenes 来呈现我的暂停和结束游戏菜单,从而始终将 SKView 保持在屏幕上?

最佳答案

我遇到了类似的问题并找到了 this有帮助。我计划使用多个 UIViewControllers 来导航到我的游戏的不同部分,如菜单屏幕、游戏结束屏幕等,但速度非常慢。在重构我的应用程序以使用其 View 类型为 SKView 的单个 UIViewController 并为我想要的每个屏幕创建一个新场景后,它开始正常工作。起初我认为这会很痛苦,因为 Controller 最终会变得难以管理,但发现大部分逻辑都封装在每个 SKScene 中,并且 Controller 仅用于呈现新场景。

另外,您应该注意从 SKScene 添加 UIKit 控件到 SKView 是可以接受的。这就是我正在做的,以避免每次我需要 UIScrollView、UIButton 或任何其他 UIKit 控件时都必须重新发明轮子。当然,当您转换时,您将不得不删除不想在场景之间共享的 UIKit 内容。

关于ios - 展开 segue 以查看包含 SpriteKit 的 SKView 的 Controller 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586390/

相关文章:

html - 在 iOS 上播放 HTML5 视频时没有声音

ios - 有没有办法从我的应用程序发送内容,而不是从我的应用程序发送内容?

iphone - 将 Json 加载到 uitableview 中

iphone - 如何在一个方法中捕获并处理 UIButton 的所有事件?

ios - 不带 dequeueReusableCellWithIdentifier 的多选 UITableView

ios - 苹果拒绝应用 “We found that your app crashed on iPhone 5s running iOS 7.1.2 ”

iphone - 如何强制MPMoviePlayerViewController全屏显示?

ios - 如何让 startScene 上的按钮转到 GameScene

ios - 允许 SpriteKit 中的触摸传播

objective-c - SKAudioNode的音量