Skscene переход в Swift - PullRequest
0 голосов
/ 28 июня 2018

По сути, у меня есть сцена меню и сцена уровня, и я хочу иметь возможность переходить назад и вперед. Если вы посмотрите здесь, то увидите первую присутствующую сцену, которая начинается с показа меню.

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, он говорит: «Эй, я здесь». но не понимает, что хочу этого сразу. Если бы был какой-то способ прекратить представлять сцену уровня и просто показать меню, это было бы здорово, так как после того, как вы закончите уровень, он не должен просто сидеть сложа руки.

Заранее благодарю за предоставленную помощь.

1 Ответ

0 голосов
/ 29 июня 2018

Таким образом, несмотря на дополнительные исследования и отладку, я обнаружил, что сцена на самом деле загружалась, но по какой-то причине не отображалась. Поиграв с визуальными настройками, я подумал о том, чтобы убедиться, что размер сцены соответствует нужному размеру, и обнаружил, что, установив размер меню, прежде чем вернуться назад, теперь отображается меню. Я надеюсь, что этот вопрос поможет кому-то, кто когда-либо сталкивался с подобной проблемой, спасибо Интернету за ничто.

...