gpt4 book ai didi

ios - 从 SKScene 过渡到 UIViewcontroller

转载 作者:行者123 更新时间:2023-11-29 00:49:14 26 4
gpt4 key购买 nike

例如,如果我有:

class SpriteKitScene: SKScene {
...
}

在那里我想要一个图像,当点击(按下,点击,触摸任何东西)时载入另一个文件:

class UiViewcontrollerScene: UIViewcontroller {
...
}

我知道如何从 SKScene 过渡到 SKScene,但我需要从 SKScene 过渡到 UIViewcontroller。

最佳答案

首先,使用 View Controller 的协议(protocol)为自己设置一个委托(delegate)。

protocol UIViewControllerDelegate{
}

参见此处:https://makeapppie.com/2014/07/01/swift-swift-using-segues-and-delegates-in-navigation-controllers-part-1-the-template/一个关于如何做到这一点的很好的教程

创建一个将托管该委托(delegate)的 SKView 类

class GameView : SKView
{
var delegate : UIViewControllerDelegate?
}

然后在 UIViewController 类中的 viewDidLoad 上,将委托(delegate)分配给 View Controller 。

override func viewDidLoad()
{
if let view = self.view as? GameView
{
view.delegate = self
}
}

现在你的 View 有一个委托(delegate)给你的 View Controller ,从这一点开始,在你的协议(protocol)文件中,创建一个转换方法

例如

protocol UIViewControllerDelegate
{
optional func transitionToMenuVC()
}

然后将代码应用到您的 View Controller 类。

class ViewController : UIViewController, UIViewControllerDelegate
{
...
func transitionToMenuVC()
{
// do transition code here
}
}

现在您已经为您的 View 设置了所有设置,以便与您的 View Controller 进行通信。

在您的场景中,您只需将场景的 View 转换到 GameView,然后使用代理进行转换

class GameScene : SKScene
{
...
func transition()
{

if let view = self.view as? GameView
{
view.delegate.transitionToMenuVC()
}
}
}

但是请注意,不可能从场景转换到 View Controller ,因为它们是两种不同的动物。您将转换 View ,因此无法使用为 View 提供的动画。

关于ios - 从 SKScene 过渡到 UIViewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310287/

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