【问题标题】:Skscene transitioning in SwiftSwift 中的 Skscene 过渡
【发布时间】:2018-06-29 23:39:36
【问题描述】:

本质上,我有一个菜单场景和关卡场景,我希望能够来回转换。如果你看这里,你可以看到第一个开始显示菜单的场景。

if let view = self.view as! SKView? {
        let testLevel = LevelMenu()
        testLevel.size = self.view.frame.size
        testLevel.initializeMenu(NumberOfLevels: 6, Restricted: true, MenuNumber: 1)
        testLevel.scaleMode = .fill
        view.presentScene(testLevel)
        view.ignoresSiblingOrder = true
        view.showsFPS = true
        view.showsNodeCount = true
    }

(LevelMenu 是扩展 SKScene 的自定义类,初始化菜单是我用来设置场景细节的方法。)

现在在 LevelMenu 类中,如果满足几个条件,则调用以下代码进入关卡。

if let view = self.view as SKView? {
        view.presentScene(currentLevel)
    }

(currentLevel 是一个变量,存储当前 Level 对象。)

此外,设置关卡时,它们的代码与设置菜单时的代码相同。

let TempLevel = Level()
TempLevel.size = self.size
TempLevel.setUp(package: menuNumber, numberInPackage: i, locked: 
   restricted, menu: self)
TempLevel.name = "Package \(menuNumber), Level \(i)"
TempLevel.scaleMode = .fill
levels.append(TempLevel)

(Level 是另一个自定义的 SKScene,setUp() 是一个设置它的方法,levels 是一个包含所有级别的数组。)

为了转换回菜单,我再次调用此代码,只是使用已传递给类的菜单。

if let view = self.view as SKView? { view.presentScene(currentLevel) }

这就是问题所在:当我在菜单中调用转换以转到某个级别时,它可以完美运行。过渡动画效果很好;但是,当我调用 presentScene() 返回时,它会打印出我放入 viewDidAppear() 中的文本,但它仍然显示关卡 Skscene 并且关卡 Skscene 仍然有工作按钮。

我尝试从他们的父母那里删除场景,但这似乎不起作用,而且从我所读到的内容来看是个坏主意。我推测菜单场景一直在加载并且只是被阻塞,当我调用 presentScene 时它​​说“嘿,我在这里”。但没有意识到我想要它。如果有某种方法可以停止呈现关卡场景而只显示菜单,那就太好了,因为一旦你完成了一个关卡,它不应该只是坐在那里。

提前感谢您提供的所有帮助。

【问题讨论】:

  • 有人有什么想法吗?
  • 通过更多的调查和调试,似乎菜单再次被加载,但由于某种原因,图形没有改变。

标签: swift skscene


【解决方案1】:

因此,经过更多调查和调试,我发现场景实际上正在加载,但由于某种原因没有显示。在尝试了视觉设置之后,我考虑确保场景的大小是正确的,我发现通过在返回之前设置菜单的大小,它现在可以显示菜单。 我希望这个问题对遇到类似问题的人有所帮助,感谢互联网。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多