YOUTUBEのHOWTO動画を参考にオリジナルのカードバトルをUNITYで製作するシリーズの第12回目。
前回はエネミー側のカード配置おより攻撃に関してアニメーションの実装を実装しました。またそれにともなう各種の修正を実施しています。今回もひきつづき参考動画をもとにゲーム製作を進めていきます。
1.バグの改修
前回の課題としてあげたほかにも「Turn End」ボタンが常に押下できる不具合。プレイヤーがエネミー側のカードを触れる不具合。エネミーターンでもプレイヤーのカード操作ができる不具合などがありました。今回は前述した3点について改修します。
1)実施内容
・「GameManager」クラスに「OnClickTurnEndButton」メソッドを追加し、プレイヤーターン時のみ「ChangeTurn」をCall処理とする
・UIのT「Turn End」ボタンプロパティのOnClickで指定している関数を「ChangeTurn」から「OnClickTurnEndButton」に変更
・「CardMovement」クラスでドラッグ可否FLGをTRUEにする判定式でプレイヤーターンFLGを条件に追加する
2)終了時の状態
前述した不具合「エネミーカードが操作できる」「エネミーターン時にプレイヤーが操作できる」「Turn Endボタンがいつでも押下できる」という3点が無事改修されていることが確認できます。
2.AIクラスの生成
GameManagerクラスについてはゲーム全体の流れをコントロールする役割ですが、各実装をしていくについて徐々に肥大化するようになってきました。特にエネミー側の処理が重くなってきているので、この部分を別途クラス化する対応を実施します。
1)実施内容
・新規に「AI」クラスの作成
・「AI」クラスに「GameManager」クラスの「EnemyTurn」を切り出して移植。
・「GameManager」クラスから「EnemyTurn」をCallするためにAIクラスを定義。
2)終了時点の状態
見た目の処理自体には一切変更がないので省略します
3.UIManagerの作成
GameManagerからエネミーAI処理を分離しましたが、UI(Panel,Text等)周りの処理についても同様に分離します。
1)実施内容
・「UIManager」クラスの新規作成
・「GameManager」クラスからUIに関連する定義を移植。UIのみのメソッドを移植
・・「GameManager」クラスから移植したメソッドをCallするためにUIManagerクラスを定義。
2)終了時点の状態
見た目の処理自体には一切変更がないので省略します
4.Playerクラスの実装
肥大化したGameManagerのリファクタリング第三弾として、ゲームデータを保持している部分を切り出して別クラスで管理する改修をします。
1)実施内容
・「GamePlayerManager」クラスの新規作成
・「GameManager」クラスからデータ管理に関連する定義を移植。
・「GameManager」クラスから移植した定義や処理をCallするためにGamePlayerManagerクラスを定義。
2)終了時点の状態
見た目の処理自体には一切変更がないので省略します
最後?に・・・・
実はここまででYOUTUBE動画で紹介されたHOWTOは終了となっています。以降は有料のeラーニングサイトでの内容となるもようです。せっかくここまで試しているので金額によっては有料登録して今後の方針を決めたいと思います。
参考サイト
本記事についてはほぼ「Unityゲームスタジオ スタジオしまづ」さまの動画を参考に作業しております。本記事を元に興味をもった方がおりましたら、YOUTUBEサイトのほうで「登録」されてはいかがでしょうか?