【问题标题】:how to transition between 2 skscenes如何在 2 个 skscenes 之间转换
【发布时间】:2018-06-25 19:44:53
【问题描述】:

我一直在尝试在我的两个 skscenes 之间转换最长的时间。有了新的雨燕,没有任何效果。我已经尝试在游戏视图控制器中使用过渡

if let view = self.view {
   // Load the SKScene from 'GameScene.sks'
   if let scene = SKScene(fileNamed: "NextLevelTab") {
      // Set the scale mode to scale to fit the window
      scene.scaleMode = .aspectFill

      // Present the scene
      view.presentScene(scene)
   }
   view.ignoresSiblingOrder = true                 
   view.showsFPS = true
   view.showsNodeCount = true
 }

并尝试使用我在网上找到的另一种方法

let reveal = SKTransition.reveal(with: .down, duration: 1)
let MainMenuTab = GameScene(size: CGSize(width: 1024, height: 768))
scene?.view?.presentScene(MainMenuTab,transition: reveal)

但没有任何效果。我做错什么了吗?

【问题讨论】:

  • "nothing's working",你的意思是第二个场景没有呈现还是?
  • 您的 GameScene 是在场景编辑器中构建的(是否有 GameScene.sks 文件)还是完全在代码中构建?
  • @Jean-BaptisteYunès 是的,它不存在。
  • @RonMyschuk 是的,有一个 sks 文件

标签: swift sprite-kit transition scene


【解决方案1】:

下面的代码是用于当你使用 init() 函数呈现场景并且没有 SKS 对应文件时

let reveal = SKTransition.reveal(with: .down, duration: 1)
let MainMenuTab = GameScene(size: CGSize(width: 1024, height: 768))
scene?.view?.presentScene(MainMenuTab,transition: reveal)

如果您有一个 SKS 文件,请使用以下内容,其中第一个 GameScene 是类名,引号中的 GameScene 是 sks 文件的名称

if let scene = GameScene(fileNamed: "GameScene") { }

【讨论】:

  • 所以如果我说得对,第一段代码用于呈现一个场景,第二行用于从一个场景过渡到另一个场景?
  • 同样的事情,一个只是从 sks 文件加载场景,另一个从代码加载它