Phaser3 継承

例えばゲーム作成でスコアを管理するときに、テキストと値はセットにした方が管理しやすい。ので、スコア管理クラスを作成。

何を継承元にすればいいかわからん

Phaser3のドキュメントみてみたら、Phaser.GameObjects.GameObjectがベースになるらしいので、これを継承してみる。継承したらコンストラクタの引数の最初にsceneを渡す。

class ScoreManager extends Phaser.GameObjects.GameObject {
  constructor(param) {
    super(param.scene);

    this.score = 0;
    this.scoreText = this.scene.add.text(8, 8, `score: ${this.score}`, { fill: "#ffaa88", fontSize: "26px" });
    this.scoreText.depth = 3;
  }

  addScore(addScore) {
    this.score += addScore;
    this.scoreText.setText(`score: ${this.score}`);
  }

  reset() {
    this.score = 0;
    this.scoreText.setText(`score: ${this.score}`);
  }
}

使用例

class GameScene extends Phaser.Scene {
  constructor() {
    super("GameScene");
  }

  preload() {  }

  create() {
    this.scoreManager = new ScoreManager({ scene: this });
  }

};