По сути, у меня есть сцена меню и сцена уровня, и я хочу иметь возможность переходить назад и вперед. Если вы посмотрите здесь, то увидите первую присутствующую сцену, которая начинается с показа меню.
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 - переменная, в которой хранится текущий объект уровня.)
Кроме того, при настройке уровней они имеют тот же код, что и меню при его настройке.
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 () - это метод, который устанавливает его, а level - это массив, содержащий все уровни.)
Чтобы вернуться обратно в меню, я снова вызываю этот код только из меню, которое было передано классу.
if let view = self.view as SKView? {
view.presentScene(currentLevel)
}
Это проблема: когда я вызываю переход внутри меню, чтобы перейти на уровень, он работает отлично. Переходы оживляют, работает отлично; однако, когда я вызываю presentScene () для возврата, он распечатает текст, который я поместил в viewDidAppear (), за исключением того, что он все еще показывает уровень Skscene, а уровень Skscene все еще имеет рабочие кнопки.
Я пытался удалить сцены у их родителей, и это, похоже, не работает, и из того, что я прочитал, будет плохая идея. Я предполагаю, что сцена меню загружается все время и просто блокируется, и когда я вызываю presentScene, он говорит: «Эй, я здесь». но не понимает, что хочу этого сразу. Если бы был какой-то способ прекратить представлять сцену уровня и просто показать меню, это было бы здорово, так как после того, как вы закончите уровень, он не должен просто сидеть сложа руки.
Заранее благодарю за предоставленную помощь.