今回はUnityで簡単なカードゲームを作成していきます。初心者でもできるように、簡単な形でいきたいと思います。(ちなみに、私はUnity初心者です(笑))
はじめに
一言でカードゲームと言っても色々な種類があります。当然、機能が多ければ多いほど、複雑になり作成するのが難しくなります。
今回作成するカードゲーム
今回は数日でサクッと作れるのを想定しています。イメージとしてはカイジのEカード風(じゃんけん)ですね。あくまでも「風味」です。ざっくりとしたゲームの流れとしては「カードを配る」→「カードを選択」→「判定」ですね。
じゃんけんカードゲームみたいな
自分と対戦相手、互いに「グー1枚、チョキ3枚、パー1枚」を配るとします(仮)。じゃんけんカードゲームみたいな感じですね。
Unityのヴァージョン
今回はUnity 2020.3.5fのヴァージョンで作成。プロジェクト名は「ECardGame」としています。

ゲーム作成開始
では実際にゲームの作成をしていきます。
画面サイズ
ゲーム画面のサイズはスマートフォンの横を意識して16:9の「1920×1080」。この辺は好きなサイズで問題ないです。

カードの作成
まずはカードを作成していきます。Assetsフォルダ内にImagesフォルダを作成。

Imagesフォルダ内にカードを作成します。カード画像を用意してもいいのですが、仮としてUnityのデフォルトで用意されているSpriteを利用していきます。
ちなみにSpriteは「2Dゲームで画像を取り扱うもの」という感じですね。

正方形のスプライトを選択し名前を「Card」とします。シーンにドラッグアンドドロップすると、ヒエラルキーにCardが追加されます。

ボタンの作成
次にボタンを作成していきます。カードを選択した後に押す、「判定ボタン」ですね。ヒエラルキーでUI→ボタンを追加します。名前は何でもいいです、とりあえず「OPEN」にしておきます。とりあえず仮置きです。

ボタンを作成するとCanvasも追加されるのでカメラ設定・スケール設定をしておきます。

ボタンの位置は適当な場所に移動しておきます。

カード番号の設定
次にカードに番号を設定していきます。表向きは絵だったりしますが、内部的には数字でカードを管理していきます。特にじゃんけん(3すくみ)の場合は数字で管理すると簡単です。
CardオブジェクトをCanvas配下に移動、Card配下にTextを追加します。テキストの初期は0、フォントサイズなどを変更していい感じにしておきます。
数字が表示されない場合は、Cardオブジェクトのレイヤ順序を変更。

カードをスクリプトで生成
次にカードをスクリプトで自動生成していきます。ベタ貼りの方が簡単ですが、勉強も兼ねてスクリプトでやっていきます。
Aseets内に「Scriptsフォルダ」と「Resourcesフォルダ」を作成。

ResourcesフォルダにCardオブジェクトを入れてプレハブ化、ヒエラルキー内のCardは削除。

ヒエラルキーで「空のオブジェクトを追加」。名前を「Operator」にしておきます。カードを配る、判定するなどを行う審判的な役割にしていきます。同じ名前のスクリプトを追加。

スクリプトの中身を下記に変更します。プレハブを生成しているだけですね。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Operator : MonoBehaviour { public GameObject CardPrefab; private void Start() { GameObject prefab = (GameObject)Instantiate(CardPrefab); } }
Operatorのpublic変数にカードのプレハブを指定。

これで実行してみます。カードは追加されますが、Canvas配下にいないため、数字は出てこないです。数字が見えなくても問題は無いのですが、軽く修正します。

スクリプトの中身を下記に変更。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Operator : MonoBehaviour { public GameObject CardPrefab; public GameObject Canvas; private void Start() { GameObject prefab = (GameObject)Instantiate(CardPrefab); prefab.transform.SetParent(Canvas.transform, false); } }
public変数にCanvasを指定して完了。

試しに再生してみて、Canvas配下に生成され、数字の書かれたカードが画面に表示されればOK

とりあえず第一回目はここまで。とりあえず「スクリプトでカードの生成まで」と言った感じ。