gpt4 book ai didi

swift - 从 SKScene 继续并再次返回导致游戏到 "freeze"

转载 作者:行者123 更新时间:2023-11-28 05:46:17 24 4
gpt4 key购买 nike

我正在开发一个具有两个不同场景(MainMenu.sks 和 Settings.sks)的 SpriteKit 游戏。我还有一个 UIViewController。

从主菜单中,用户可以点击“设置”,这会导致应用加载 Settings.sks 场景并显示它。

使用这段代码完成:

// Move to Settings.sks
let transition = SKTransition.flipVertical(withDuration: 1.0)
let loadScene = SettingsScene(fileNamed: "SettingsScene")
loadScene?.scaleMode = self.scaleMode
self.view?.presentScene(loadScene!, transition: transition)

在 Settings.sks 场景中,用户可以点击 SKLabelNode“更改用户名”,这会导致应用通过执行 segue 加载 UIViewController。

UIViewController 包含一个 UITextField 和一个 UIButton。 UIButton 将用户带回 MainMenu.sks。

但是,当我这样做时,就像 MainMenu 的一个新场景被放置在另一个场景之上,导致应用程序有点“卡住”并且不响应任何触摸手势。我可以从 nodeCount 中看到节点增加了一倍。

解决方法是直接从 MainMenu.sks(也通过 segue)加载 UIViewController。通过这样做,该应用程序运行良好。

我怀疑问题出在我加载 Settings.sks 的方式上。

我错过了什么?也许在退出之前卸载整个 SKView?

最佳答案

执行 segue 将在堆栈顶部呈现一个新 View 。通过使用 segue 返回主菜单,应用程序将在 UIViewController 之上创建一个新的主菜单。我不能确定为什么您的应用程序会卡住。但我猜想当从您的 UIViewController 创建和显示新主菜单时,有些属性或函数无法正常工作。

我建议取消用于到达 UIViewController 的 segue。这样您就可以返回到之前的 View 并节省内存。

您需要在目标 View (在本例中为主菜单)中编写一个 IBAction:

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) {
}

然后按住 Ctrl 并从 UIViewController 中的按钮拖动到 Storyboard 中的退出图标。您应该会看到一个使用刚刚编写的 IBAction unwindToMainMenu 的选项。这将创建一个 unwind segue。

可以在这个答案中找到展开转场的完整指南和多个示例:What are Unwind segues for and how do you use them?

关于swift - 从 SKScene 继续并再次返回导致游戏到 "freeze",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54674641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com