質問: true であることを確認しています。 isPausedで停止された画面をアプリの再開時に動き出さないようにするにはどうしたらよいのでしょうか。
回答: API Reference - class SKView これの、`isPaused`の項目から、一部引用します。 > > Discussion > > > When an application moves from an active to an inactive state, isPaused is automatically set to true. When an application returns to an active state, isPaused is automatically set to its previous value. > > > すなわち、`UIApplication`の`Notification`を利用しなくても、「automatically」に、アプリがバックグラウンドに回ったら、ポーズになって、フォアグラウンドに戻ったら、ポーズが解除されます。 「えーっ、`SKScene`の`isPaused`は操作したけど、`SKView`の`isPaused`は操作してないよ!」とおっしゃるかもしれませんが、じっさいのアプリの挙動を見ると、連動しているのだと推測できます。 ●第1案 なので、意図したポーズをするには、「automatically」なポーズの解除がなされた直後に、`isPaused`を`true`にするといいでしょう。では、そのタイミングはなにかというと、`.UIApplicationDidBecomeActive`というNotificationが使えそうです。 *SKSceneのサブクラス* ``` override func didMove(to view: SKView) { NotificationCenter.default.addObserver(self, selector: #selector(becomeActive(_:)), name: .UIApplicationDidBecomeActive, object: nil) } func becomeActive(_ notification: Notification) { isPaused = true } ``` ●第2案 `SKView`のサブクラスを作成し、プロパティ`isPaused`を上書きすることを考えます。 ``` class SubSKView: SKView { override var isPaused: Bool { get { return super.isPaused } set { scene?.isPaused = true } } } ``` プロジェクト内のすべてのソースコード、Storyboardで、`SKView`と型指定している箇所を、`SubSKView`に書き換えてください。アプリがフォアグラウンドに戻っても、ポーズしたままになります。 なお、このままでは、複数のSceneを採用している場合、すべてのSceneにそれが適用されますし、意図しないケースでポーズしたままということになるおそれがあります。クラスの上書きには、副作用を注意すべきです。