Unity カードバトルゲームの作り方8 プレイヤー初期デッキの設定&CPUカードデータの設定 | Unity入門の森 ゲームの作り方

Unity カードバトルゲームの作り方8 プレイヤー初期デッキの設定&CPUカードデータの設定

Unity 本格カードゲームの作り方 ハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

この講座はハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」の作り方講座の第8回です。

前回の記事ではカード効果のUI反映、そしてシングルトンを用いたカードデータ管理のためのマネージャーシステムと日英ローカライズ機能を実装しました。

前回の記事:

デッキ構築型カードバトルゲームの作り方7 カード効果のUI反映・日英翻訳でローカライズ機能をUnityで実現
この記事はハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」の作り方講座の第7回です。 前回で一通りのカードデータとカード効果の設定を行いました。Unityで実践的なカードバトルゲームのカード効果の開発を経験できたかと思います...

今回は前回作成したシングルトンによるデータ管理のシステムを拡張してプレイヤーのデッキデータを管理する機能を作成します。

記事の後半ではこれから戦闘処理を実装していくにあたって必要になる敵キャラクターAIパラメータや行動データも設定していきます。


【Line登録者限定のプレゼントもあるよ!】

デッキ管理スクリプトを作成

Dataクラスを直接拡張してデッキ管理の機能を付けても良いですが、機能を分割する為に新しくPlayerDeckDataクラスを作成します。(Scripts/Commonフォルダ以下がおすすめです)

プレイヤーの初期デッキ、および現在設定中のデッキデータを管理します。Dataクラス同様にDetaManagerオブジェクトにアタッチして使用します。

まずはInspectorから初期デッキを表すplayerInitialDeckパラメータに対してカード設定ファイルをドラッグ&ドロップします。これにより初期データ(ゲーム起動時)でのプレイヤーデッキを作成します。何でも良いので適当なカードを合計10枚以上指定しておきます。

(上記の登録カードは一例です。6章で同じカードを作ってないですが気にしないでください)

今回の設計ではデッキに組み込んだカードのデータをint型のIDで管理しています。このIDは各カードの設定ファイル(CardDataSO)に入力した通し番号(serialNum)と同一です。

複数のデータを持っているCardDataSOファイルそのものでなくIDで管理する事によって今後の拡張の際に取り扱いやすくなります。

ただしIDだけで管理する場合は当然そのIDから該当のカードデータを取得できる機能を用意する必要があります。そのため、allPlayerCardsListパラメータを追加し、ここにプレイヤーが使用する全てのカードをまとめて登録します。IDとカードデータの紐づけをDictionary型であるCardDatasBySerialNumで記憶しておきます。

 

また、ここでプレイヤーが保有している全てのカードをallPlayerCardsListに登録します。

Inspectorからの操作でallPlayerCardsListに全プレイヤーカードを登録しますが、ファイルの1つ1つを順番にドラッグ&ドロップしているととても時間がかかってしまいます。まとめて操作する方法も学んでおきましょう。

Projectビューでの複数ファイルの同時選択自体はShiftキーを押しながらクリックまたは矢印キーの入力で可能です。又はCtrl+Aキーを押す事で開いているフォルダ内の全部のファイルが選択状態になります。

しかし複数のファイルを同時選択するとInspectorビューでの表示が切り替わってしまい先ほどのPlayerDeckDataコンポーネントに対してドラッグ&ドロップ操作が出来ません。

この切り替わりを防ぐ方法としてInspectorビューのロック機能があります。事前にDataManagerオブジェクトを選択しておき、Inspectorビュー右上の鍵マークのアイコンをクリックするとロック状態になり、他のファイルやオブジェクトなどを選択してもInspectorビューが切り替わらなくなります。

この状態でPlayerCardsフォルダ内のカードデータファイル全てをallPlayerCardsListにドラッグ&ドロップすれば完了です。

操作後は忘れずにInspectorのロックを解除しておきましょう。気づかずにロックしたままだと誤操作の原因になりやすいです。

 

なお、「敵が使用するカード全部のリスト」は用意しなくても大丈夫です。敵のデータを設定する際には使用するカードを直接それぞれの敵に対して指定するのでIDで管理する必要はありません。

 

PlayerDeckDataクラスは今後デッキ編集画面を作成した時に拡張を行う予定です。

Dataクラスからの参照をセット

他のクラスからPlayerDeckDataクラスにアクセスできるようにDataクラス内で参照を用意しておきます。

Data.cs

DataManagerオブジェクトのDataコンポーネントにDataManagerオブジェクト自身をアタッチしておきます。

 

ゲームクリエイター専門学校の資料請求はこちら
【学歴不問・高卒、元ニートでも挑戦できる】

FieldManagerクラスでの現在デッキ管理

FieldManager内にて戦闘中に使用するデッキ(山札)の状態を管理し、ドロー操作によってデッキの中からカードが引かれていく処理を追加します。

PlayerDeckDataクラス内ではプレイヤーの現在のデッキ設定をdeckCardList変数内に(通し番号で)格納していますがこれは「戦闘開始時の初期デッキ」として扱います。

戦闘中にデッキからカードを引く時はFieldManager内に用意する「現在デッキデータ」から引いていきます。このゲームが戦闘ごとに手札や山札の状態がリセットされるルールになっている為です。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

今回はDataクラスを拡張してデッキ管理の機能を追加しました。今後もセーブ&ロードが絡んでくる機能や全シーンで共通になる機能はDataクラスを拡張して実装していきます。

そしてプレイヤーのデッキを参照して戦闘開始時に山札を用意し、そこからカードをドローするという最初の流れを実装しました。Random.Rangeを使えば任意の範囲内の数値をランダムに得ることができます。

次回はさらに戦闘画面を充実させるための開発に踏み込んでいきます。

今回はその準備として敵キャラクターのデータ準備までを行いました。ひとまず1体分のデータだけ作っておけば動作確認可能です。

次の記事:

Unity カードバトルゲームの作り方9 ステータスUI・カードバトルアニメーションの実装
この講座はハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」の作り方講座の第9回です。 前回の記事では、戦闘シーン内でプレイヤーのデッキを作りそこからカードを引いてくる処理や敵キャラクターデータの設定を行いました。 前回の記事...

Unity ハクスラローグライク×デッキ構築型カードゲーム「呪術迷宮」の作り方講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました