ここではゲームの一時停止と再開について学習していきます。

下準備

your_game.dartにupdateを再度追加します。ただしコードは下記のようなシンプルなものになります。worldCountが無いとエラーが出てしまう場合はYourGameクラスの直下に定義してあげてください。

  @override
  void update(double dt) {
    super.update(dt);
    //カウントアップ
    worldCount++;
    print(worldCount);
  }

実行をしてカウントアップするログが出れば次へ進みます。

pauseEngine

your_game.dartのstartButton追加の下にpauseEngine();を記載します。これで実行すると、カウンタ表示が進んでいない事が解ります。これがポーズ命令です。

  @override
  Future<void> onMount() async {
    overlays.add('startButton');
    pauseEngine();
  }

resumeEngine

今度はmakeCirecle関数の先頭にresumeEngine();を記載します。これがゲーム再開の命令となります。実行すると、この関数が実行された時(ボタンが押された時)からカウンターが進み始めるのが確認出来ます。

  void makeCirecle() {
    resumeEngine(); // ゲームを開始
    //半径、X、Yのランダム値生成
    var randomRadius = Random().nextInt(50) as double;
    var randomX = Random().nextInt(300) as double;
    var randomY = Random().nextInt(300) as double;

    //CircleManを生成する。もうadd関数の中で生成しちゃう。
    add(CircleMan(randomRadius, Vector2(randomX, randomY)));

    if (children.query<CircleMan>().length > 50) {
      overlays.remove('startButton');
    }
  }

次のページはこちら