【发布时间】: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 时它说“嘿,我在这里”。但没有意识到我想要它。如果有某种方法可以停止呈现关卡场景而只显示菜单,那就太好了,因为一旦你完成了一个关卡,它不应该只是坐在那里。
提前感谢您提供的所有帮助。
【问题讨论】:
-
有人有什么想法吗?
-
通过更多的调查和调试,似乎菜单再次被加载,但由于某种原因,图形没有改变。