Unity デジタルカードゲームの作り方19 カードの効果説明メッセージウィンドウの実装 | Unity入門の森 ゲームの作り方

Unity デジタルカードゲームの作り方19 カードの効果説明メッセージウィンドウの実装

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


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

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

前回はカードショップシステムの実装とUnityパーティクルを利用したエフェクトの作り方を解説しました。

前回の記事:

Unity カードゲームの作り方18 カードショップの実装とUnityパーティクルを用いたエフェクト強化
今回はUnityでハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る講座の第18回です。 前回は経験値を消費してプレイヤーのパラメータを強化するシステムと転職・ジョブチェンジシステムを実装しました。 前回の記事: 今回は...

実はここまでの内容でこのゲームに必須のメインシステムは出来上がっています。

ここからはよりゲームを楽しみやすくするための実装を行っていきます。

まずは現在までプレイヤーに説明されていない各カード効果の表示システムを作っていきます。

呪術迷宮のカードゲームではカード合成システムを実装しているので、カード効果の表示欄が可変にできる形式で作ります。


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

カード効果を表示するメッセージウィンドウシステムを実装する

プレイヤーがカードの効果を知らないまま手探りで遊んでもらうのも面白い試みではあります。

が、ここまでカード効果の種類が多いと直感でわかりにくいものも多くなってきます。ちゃんとした説明用のシステムを実装しておきましょう。

戦闘中のカードオブジェクトをタップしている間だけそのカードの全効果の説明がそれぞれ表示されるという形のウィンドウシステムを実装することにします。

 

まずは複数同時表示させる「カード効果説明オブジェクト」の入れ物を空オブジェクトで作っておきます。作成するシーンはBattle Sceneです。カード効果説明オブジェクトについては横長に作成してプレハブ化し、縦に並べて表示させます。

  • オブジェクト名:EffectExplainDisplay
  • 親:Game Window
  • PosX:-340 PosY:60
  • Width:374 Height:402
  • (Vertical Layout Groupをアタッチ)Spacing:8

Vertical Layout Groupは、親コンテナ内にある子要素の位置とサイズを自動的に整列するために使用されるコンポーネントです。Spacingプロパティは、子要素同士の間隔を制御し、設定された値に基づいてそれらを適切に配置します。子要素同士の間隔を広げたい場合は大きな値を設定しましょう。

カード個別効果説明オブジェクトのUIを作成する

1つの効果の説明を表示するUIを作成していきます。まずは土台として画像UIを用意します。説明UIではタップする必要がないのでタップ判定されない設定にします。

  • オブジェクト名:EffectExplainPart
  • 親:EffectExplainDisplay
  • Width:374 Height:74
  • (Image)Source Image:Textures/GUIs/Cards/infoFrame.png
  • (Canvas Groupをアタッチ)Interactable・BlocksRaycasts:オフ

Interactableをオフにすると、このUIグループ内の全ての要素がユーザーとのインタラクションを受け付けなくなり、ボタンクリックなどが発火しなくなります。

BlocksRaycastsをオフにすることで、グループ内のUI要素がレイキャスト(Raycast)の対象から除外されます。UI要素が前面に表示される場合、背後のオブジェクトに対するレイキャストがブロックされることがありますが、この設定によりその問題を回避できます。

上記二つの設定でUI要素を無効化し、UIの背後にあるオブジェクトとのインタラクションを可能にしています。

効果名Text

説明する効果の名前を表示するTextです。

  • オブジェクト名:NameText
  • 親:EffectExplainPart
  • PosX:-76 PosY:18
  • Width:200 Height:24
  • (Text)Font Style:Bold(太字)
  • (Text)Alignment:左寄せ
  • (Text)Best Fit:0~20

以降のものを含め、表示内容は全てスクリプトで設定するためSimpleTranslationTextコンポーネントは不要です。

合成モードText

この効果が合成可能かどうかを表示するTextです。

  • オブジェクト名:CompoModeText
  • 親:EffectExplainPart
  • PosX:100 PosY:18
  • Width:150 Height:24
  • (Text)Alignment:右寄せ
  • (Text)Best Fit:0~15

効果説明Text

この効果の説明文章Textです。

  • オブジェクト名:ExplainText
  • 親:EffectExplainPart
  • PosX:0 PosY:-12
  • Width:350 Height:32
  • (Text)Alignment:左上寄せ
  • (Text)Best Fit:0~15

カードの効果説明処理クラスを作成

EffectExplainPartオブジェクトにアタッチして表示内容を変更するためのスクリプト、EffectExplainPartクラスを仮作成しておきます。

アタッチ・参照セットを済ませたらオブジェクトのEffectExplainPartはプレハブ化します。

その後シーン上のEffectExplainPartオブジェクト(インスタンス)は5つ程度になるよう複製しておきます。

ゲーム中にオブジェクトの生成を行うという形でも構いませんが、オブジェクト生成のInstantiateメソッドはやや負荷が重いので削減できる所は削減していきます。

効果説明処理クラス

同様にEffectExplainDisplayオブジェクトにアタッチするEffectExplainDisplayクラスを作成していきます。

続きを読む

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

テストプレイをすればプレイヤーカードをドラッグしている間の効果表示、および敵カードに触れている間の効果表示がそれぞれ確認できます。

 

状態異常の説明表示ダイアログも実装する

作成した効果説明ダイアログシステムを活用していきます。状態異常の効果についても同様にアイコンをタップすれば説明を表示するようにしてみましょう。

まずは状態異常アイコンクラスを拡張し、状態異常説明文の定義やタップ時の処理の追加を行います。

StatusEffectIcon.cs

  • 説明表示時、効果量の代わりに状態異常ポイントの表示を行います。

EffectExplainDisplayクラス、EffectExplainPartクラスも続けて編集して状態異常の説明表示に対応できるようにします。

EffectExplainPart.cs内 新規メソッド

EffectExplainDisplay.cs内 新規メソッド

スクリプト編集後、シーン内に4つ存在する状態異常アイコン(StatusEffectIcon)オブジェクトに対してEffectExplainDisplayへの参照をセットします。

 

これでゲーム中に状態異常の効果をタップで確認できるようになりました。

 

まとめ

カード効果を確認しやすくするための効果表示ウィンドウシステムの実装を行いました。

ゲームの難易度に関わらず、ユーザーインターフェースはなるべく親切に設計してあげると誰が遊んでも楽しみやすいゲームになります。

次章はゲームのやりこみ要素を高める無限に潜れるダンジョンとデッキ補充システムの実装を行います。

次の記事:

Unity カードバトルRPGの作り方20 無限に遊べるダンジョン・デッキ補充・手札を捨てる処理の実装
この記事はUnityでハクスラローグライク×デッキ構築型カードバトルRPG「呪術迷宮」を作る講座の第20回です。 前回はバトル時にカード効果をわかりやすく表示するためのウィンドウシステムを実装しました。 前回の記事: 今回はリリース時のゲー...

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



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

コメント

  1. 匿名 より:

    執筆ご苦労様です。誤記のご報告です。

    【効果説明処理クラス】の段の「FieldManager.cs(一部省略)」75~78行目に、講座第20回での更新部分が紛れ込んでいます。

    お役に立てれば幸いです。

    • Unity入門の森 より:

      誤植報告ありがとうございます!
      確認した後、該当箇所修正いたしました。
      助かります!

  2. 匿名 より:

    本講座で最後まで実装を終えて動作確認は問題なく出来ましたが、
    コンソールで以下の警告が表示されます。
    どうやらDOTEEN関連で何かおかしいようです。
    警告が3つ表示され、以下に内容を載せますので何か分からないでしょうか。


    DOTWEEN ► Target or field is missing/null () ► The object of type ‘Image’ has been destroyed but you are still trying to access it.
    Your script should either check if it is null or you should not destroy the object.


    DOTWEEN ► Target or field is missing/null () ► The object of type ‘RectTransform’ has been destroyed but you are still trying to access it.
    Your script should either check if it is null or you should not destroy the object.


    DOTWEEN ► SAFE MODE ► DOTween’s safe mode captured 3 errors. This is usually ok (it’s what safe mode is there for) but if your game is encountering issues you should set Log Behaviour to Default in DOTween Utility Panel in order to get detailed warnings when an error is captured (consider that these errors are always on the user side).

    • Unity入門の森 より:

      講座完走おめでとうございます!

      警告文に関して補足しますね。
      DOTweenの警告に関しては基本的によく出るものであり実害のあるものは少ないです。
      上記の警告文は削除されたオブジェクトに対してアニメーションを実行しようとした時に出るものですが、DOTweenの設定でSafeModeが有効なら自動的に対象アニメーションを停止してくれるのでエラーの原因にはなりません。
      気になる場合はアニメーションを使用するオブジェクトの削除時に全てのアニメーションを停止するように組めば警告も無くなりますが、ひとまず講座ではスクリプトの簡略化のためそのままにしております。

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