例如,如果我有:
class SpriteKitScene: SKScene {
...
}
在那里我想要一个图像,当点击(按下,点击,触摸任何东西) 使用以下命令加载另一个文件:
class UiViewcontrollerScene: UIViewcontroller {
...
}
我知道如何从SKScene过渡到SKScene,但我需要从SKScene过渡到UIViewcontroller。
答案 0 :(得分:1)
首先,使用视图控制器的协议为自己设置一个委托。
protocol UIViewControllerDelegate{
}
请参阅此处:https://makeapppie.com/2014/07/01/swift-swift-using-segues-and-delegates-in-navigation-controllers-part-1-the-template/以获取有关如何执行此操作的精彩教程
创建一个将托管此委托的SKView类
class GameView : SKView
{
var delegate : UIViewControllerDelegate?
}
然后在UIViewController类的viewDidLoad中,将委托分配给视图控制器。
override func viewDidLoad()
{
if let view = self.view as? GameView
{
view.delegate = self
}
}
现在你的视图有一个视图控制器的委托,从这时起,在你的协议文件中,制作一个转换方法
E.G。
protocol UIViewControllerDelegate
{
optional func transitionToMenuVC()
}
然后将代码应用于视图控制器类。
class ViewController : UIViewController, UIViewControllerDelegate
{
...
func transitionToMenuVC()
{
// do transition code here
}
}
现在您已经为视图设置了所有设置,以便与您的视图控制器进行通信。
在场景中,您只需将场景视图投射到GameView,然后使用代理转换
class GameScene : SKScene
{
...
func transition()
{
if let view = self.view as? GameView
{
view.delegate.transitionToMenuVC()
}
}
}
请注意,不可能从场景转换到视图控制器,因为它们是2种不同的动物。您将转换视图,因此使用为视图提供的动画而停留。