【Unity4】バトルシステム、リファクタリング

今回は進捗なし。

といっても何もしなかったわけじゃない。

バトルシステムはAIが選択したカードと自分で選んだカードとのスコアを比較して勝敗を決めるところまでは実装した。

ところがだ、ソースがスパゲッティ状態。わはは。

原因は、アニメーション部分のシーケンスをちゃんと設計せずにiTweenに頼りすぎたせいだ。

iTweenは便利だし手軽にオブジェクトを動かせてよいのだが、基本的に非同期に動く。

そのため、ターン制バトルのように全体の動作や入出力を統一的に制御する必要がある場合、いちいち頭を悩ませられる。

簡単な例で言うと、このアニメーションが終わった後に入力可能にしたい場合、などだ。

そこで、iTweenに用意されているコールバックを多用することになる。

アニメーションが終わったら、このメソッドを実行してね、と。

当然、メソッドの呼び出し、呼び出され関係がいろんなところに散らばる。

結果、スパゲッティ、と。

なので、急遽手を止めて、紙ベースで絵コンテから起こして設計しなおした。

対策はというと、ストラテジーパターンのような方法にした。

iTweenを呼び出してアニメーションさせるような演出のロジックは、不可分のアニメーション単位でクラスわけする。

メインループから、アニメーション演出が必要になるたびに、入力をロックして上記クラスに処理を委譲する。

上記クラスは一連の処理が終わった時点で、メインループ側にアニメーションの終了を通知する、という流れだ。

疲れた。

5年前

コメントを残す

メールアドレスが公開されることはありません。