気ままなUnityエンジニアブログ

新米Unityエンジニアが送る解説アウトプットブログです。Twitter : @UjinUnity

MENU

【Unity ゲーム制作】神経衰弱ゲームを作ろう!〜その3 ( カード生成のやり方)

スポンサーリンク

前回はCardオブジェクトのPrefabを作成しました。

今回はカード生成用のマネージャークラスで
Prefabを生成してみましょう!

Hierarchyに GameManagerオブジェクト

を作ろう!

今回はCanvas外部にCreateEmptyを生成します。

Hierarchy 上で右クリック → 3DObject → CreateEmptyを選択しましょう。



f:id:Wojtek:20190924005513p:plain

ここで作ったGameManagerオブジェクトは、Manager系のクラスのアタッチ用に作成しました。

それではここに カード生成用のクラスをアタッチしたいと思います。

カード生成専用のクラスを作ろう!

f:id:Wojtek:20190924005614p:plain

まずは CardCreateManager.cs を作成し、
先ほど作ったGameManagerオブジェクトにアタッチしましょう

CardCreateManagerのプロパティ

アタッチした部分を見ると、文字と空白になっている部分があると思います。

これはCardCreateManagerクラスのPublic型の変数です。
詳しい説明は省きますは、今回はこの変数に該当するオブジェクトをアタッチしたいと思います。

以下の動画の通りに、CardPrefab のところに、前回作成したCardオブジェクトのPrefabをフォルダからアタッチしましょう。
r

f:id:Wojtek:20190924005653g:plain

CardCreateManagerの変数が動画の用に変更されれば成功です。

画像を導入するフォルダを作成する

それではいよいよカード用の画像を読み込みたいと思います。

画像は任意の画像を3枚、いらすとやなどから拝借してください。

本記事では筆者が描いたイラスト??? を基に解説していきます。

まずは画像を入れるフォルダをUnityに作成しましょう。

Resourcesフォルダ内部に Image フォルダを作成してください。


f:id:Wojtek:20190924010102p:plain

これで画像を入れ込む場所が用意できました。

カード用の画像をUnityに導入しよう!

それでは画像をUnityに読み込ませましょう。

やり方はとても簡単。
画像を選択して先ほど作ったImageフォルダに直接入れ込むだけ!

これ以外だと、Unityフォルダを開いてそこに入れる方法もあります。


f:id:Wojtek:20190924005836g:plain

参考画像には突っ込まないで下さい。。。

導入した画像をSpriteに変更しよう!

画像の読み込みは成功しましたが、そのままではUnity上で使用することはできません。

2Dオブジェクトの画像として扱える用にModeを変更しましょう。

以下の動画を参考に変更してみてください。

画像を選択して右側にでてくる部分をSpriteに変更しましょう。


f:id:Wojtek:20190924005928g:plain


f:id:Wojtek:20190924005956p:plain

画像のようになれば成功です。
今回は背景が透明なのでこのようになっていますが、透過処理がない場合でも画像のサムネイルなどが変更されます。

CardCreateManager で 実際にカードを生成する

いよいよソースコードを記載しましょう。
サンプルコードをCardCreateManagerに記述してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CardCreateManager : MonoBehaviour {

    // 生成するCardオブジェクト
    public Card CardPrefab;

    // 「カード」を生成する親オブジェクト
    public RectTransform CardCreateParent;

    void Start () {

        Card card = Instantiate<Card> (this.CardPrefab, this.CardCreateParent);
    }
}

今回は Instantiate を使用して CardPrefabを生成しております。

Instantiateは動的にオブジェクトを生成したい時に使用されます。

CardCreateParent を引数として渡していますが、この場合、CardCreateParentの子オブジェクトとして生成されます。

ここまで書けたらGame を起動してみましょう。

f:id:Wojtek:20190924010238g:plain


f:id:Wojtek:20190922230302p:plain


CardField」の子オブジェクトに「Card (Colne )」が生成されていれば成功です!