phaser3でスプライトの出現が重くて焦った話
起こったこと
Phaser3でゲーム制作をしているときのこと、Phaser.Physics.Arcade.Group
を使って敵データ(Sprite)をたくさん出現させていた。
ステージクリア型のゲームで、ステージをクリアしたタイミングで現在の敵データをdestroyし、現在のGroupを持つ変数を次のステージのGroupに上書きする処理をしていた。
しかし、ステージがある程度進むと重くなっていった。
ステージをデバッグする機能を用いて敵を100ほど出現させても処理落ちしなかったが、次ステージに移ると処理落ちが激しい状態になった。
groupのclearメソッド
以下のリンクが答えだった。敵データをdestroyしてもgroupに存在しつづける仕様らしい。groupからも明示的にSpriteとのリンクを解除するメソッド(clear)を用いる必要があった。
作ったゲームの紹介
所謂固定シューティング
というもので、キャラは左右にだけ動くことができるシューティングです。撃って避けてしゃがんでください。しゃがみ中は相手と重なっても弾に当たっても全くダメージを受けません。シューティングでは結構難易度低めだと思います。
またいつかしっかりとブログに書きたいところ。