Почему повторное открытие приложения на iOS11 + делает паузу в узлах SpriteKit? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть SKSpriteNode в сцене, в которую встроены анимации из редактора сцен SpriteKit.Ни одна из анимаций не выполняется с помощью кода.Skspritenode импортируется в сцену из файла .sks.

Я тестировал на iPad Pro под iOS 10.3.2, и он отлично работает, тогда как на iPhone XS Max под iOS 12 только анимацияиграть, как только я закрою приложение (или даже просто выйду из многозадачности) и вернусь обратно. Анимации не запускаются при первом запуске приложения.

Я читал о: "с iOS11Apple установила состояние по умолчанию для сцен и узлов SKSprite, которые будут приостановлены. "Поэтому для исправления я сказал импортированному узлу:

nodeName.isPaused = false.И это решило проблему.

Почему выход из приложения и его повторное открытие говорит о том, что нужно что-то сделать, чтобы сделать паузу?

1 Ответ

0 голосов
/ 23 октября 2018

Когда дело доходит до IsPaused, ваша сцена будет устанавливать для этого свойства значение true при выходе из приложения и устанавливать значение false при возвращении из приложения.Это заставит все ваши узлы также установить для переменной IsPaused значение false и true.

Я рекомендую переопределить свойство IsPaused и связать метод получения и установки с закрытой переменной в вашем собственном классе.

Вы также можете использовать ||со встроенным isPaused на случай, если вы захотите что-то с ним сделать.

class GameScene : SKScene
{
    private var _realPaused  = false
    public override var isPaused : Boolean
    {
        get
        {
            return super.isPaused || _realPaused
        }
        set
        {
            super.isPaused = newValue // this will mess with your children nodes if they are not the same value as parent,  preserve all children prior to setting this if needed
        }
    }
}
...