【スタジオしまづ】カードゲームの作り方を学んでみる #1 UIの実装

#カードゲームの作り方を学んでみる #1 UIの実装

カードゲームが作りたかったので【Unityゲームスタジオ スタジオしまづ】さんの動画を見ながら学習してみる

シャドバ風！？カードゲームの作り方 #1 UIの実装
https://youtu.be/4-MzW0AWkbc

#どんなゲームができるのか
動画時間0:00～
シャドウバースやハースストーンのようなゲームの基本的な部分ができる
>
自分と相手のヒーローがいてHPを持っている
タイマーが表示されて制限時間がある
自分のターンで出来ること
・手札のカードをコストを払って場に出す
・場のカードで相手に攻撃する
・ターンエンドボタンを押すと相手のターンになる
相手のターンで行われること
・相手がカードを場に出す
・場のカードで攻撃してくる

#プロジェクトの作成
動画時間1:50～
2Dを選んで新しいプロジェクトを作成
待ち時間は3分くらい
![202004122333.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/9985cc01-f328-69b3-7dc4-a740c4dd0a77.png)


#キャラクター画像の準備
動画時間4:00～
アセットストアからキャラクター画像を取得してインポート
![202004122348.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/8dc831bd-fd2a-d439-2f6e-2ff553800541.png)

「aekashics」と検索して
　　Aekashics Librarium - Megapack III
をダウンロード＆インポート
>その時はDemoのチェックを外す
![202004122354.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/c8d36079-9c74-d8d6-0a46-4988a70f978e.png)

#シーンの編集
動画時間5:00～
・シーン名を「Gmae」に変更
・背景色をオレンジに変更

#カードの作成
動画時間5:30～
####カード（Card）
・作成＞UI＞画像(Image)　をクリックして画像を生成
![202004130009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/e240ae5f-bb3e-b5c4-cb53-56e621807d95.png)
・名前を「Card」にする
・高さを120にする
・位置に関するモノとして使うのでImage(Script)は削除
![1-05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/6164313a-5fa1-8467-6efb-dba73564cf4f.png)


####パネル（Panel）
動画時間6:30～
・作成＞UI＞画像(Image)　をクリックして画像を生成し、Cardの子に設定
・名前を「Panel」にする
・サイズを親要素に合わせたいので短形トランスフォーム(Rect Transform)を編集する
・アンカープリセットをstretch:stretchにする
・左(Left),上(Top),位置Z(Pos Z),右(Right),下(Bottom)はすべて0にする
![1-06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/889cc934-5f23-47e2-b479-bd28b70847e2.png)


動画時間8:15～
・画像（スクリプト）の色をオレンジに

####キャラクター画像（Icon）
動画時間6:55～
・作成＞UI＞画像(Image)　をクリックして画像を生成し、Cardの子に設定
・名前を「Icon」にする
・ソース画像にキャラクター画像を設定
>ソース画像テキストボックスの右側のまるをクリックするとSelect Spriteウィンドウが出てくるのでそこから適当な画像を設定する
>![1-07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/3cdebbcd-f17f-5490-aa9c-71e6e9b27df3.png)


・幅(Width),高さ(Heigth)を70にする
・位置Y(Pos Y)を16.8にする

####攻撃力テキスト（AT）
動画時間7:30～
・作成＞UI＞テキスト(Text)　をクリックしてテキストを生成し、Cardの子に設定
・名前を「AT」にする
・サイズ調整
・位置をカードの左下にする
・テキストは「5」を設定
・中央揃えにする
・Font StyleをBoldに
・サイズを20にする
・赤色にする
![1-08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/d455eb26-f0c5-455f-dd9d-ec70d747bc03.png)


####HPテキスト（HP）
動画時間8:50～
・ATを複製してテキストを生成し、Cardの子に設定
・名前を「HP」にする
・位置をカードの右下にする
・緑色にする
![1-09.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/5a40f1f1-955f-2357-6547-67424655e8d2.png)


####コストテキスト（Cost）
動画時間9:05～
・ATを複製してテキストを生成し、Cardの子に設定
・名前を「Cost」にする
・位置をカードの左上にする
・青色にする
![1-10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/66cdadbe-4f4f-e4f9-d7a3-0904a66f86de.png)


####カード名テキスト（Name）
動画時間9:20～
・ATを複製してテキストを生成し、Cardの子に設定
・名前を「Name」にする
・位置をキャラクター画像の下にする
・白色にする
・フォントサイズを15にする
![1-11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/26334a5a-d029-8766-aa35-cf53c2d5fc2a.png)
たぶんサイズ自動調整のチェックを入れておくといいかも

***
ここまででカードは完成、サイズや位置は少しずれてても大丈夫
![1-12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/52322545-e52c-c544-771e-ee26eb3296d8.png)


#カードのプレハブ化
動画時間10:20～
・AssetsにPrefabsフォルダーを作成
・PrefabsにCardをドラッグアンドドロップ
・PrefabsにCardが入ったのを確認したらSceneにあるCardを削除

#手札(Hand)の作成
動画時間11:00～
・作成＞UI＞パネル(Panel)　をクリックしてパネルを生成し、Canvasの子に設定
・名前を「Hand」にする
・アンカープリセットcenter:middleにする
・高さを180にする
・位置Yを-305にする
・コンポーネントを追加(Add Component)をクリックしてHorizontal Layout Groupを追加
・子を強制的に拡大(Child Force Expand) の幅(Width)と高さ(Height)に入っているチェックを外す
・間隔(Spacing)を20にする
・子を整列(Child Alignment)をMiddle Centerにする
![1-14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/40e3fe0c-31cf-5938-fbea-d24f82371170.png)


#フィールド(Field)の作成
動画時間11:50～
・Handを複製してパネルを生成し、Canvasの子に設定
・名前を「Field」にする
・Pos Yを-90にする
・幅を678にする

***
手札とフィールドができたらプレハブからカードをコピーしてきて5枚づつほど配置して見え方を確認する
![1-15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/48693685-aaa7-f12e-5925-cd08609ed45f.png)


#敵の手札とフィールドの作成
動画時間14:00～
・HandとFieldをコピー
・名前を「EnemyHand」と「EnemyField」に変更
・画面の配置と同じになるようにヒエラルキーの並びを変更
・Pos Yのマイナスを消して画面の上側に表示されるようにする
![1-16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/c129768d-231c-7267-f999-376ac86f0e0a.png)


#ヒーロー(Hero)の作成
動画時間15:10～
・作成＞UI＞画像(Image)　をクリックして画像を生成し、Canvasの子に設定
・名前を「Hero」にする
・位置Xを-455にする
・位置Yを-60にする
・色を赤にする
![1-17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/53dc3d9a-6f15-4da9-5cc5-4b21df50d896.png)


####ヒーロー画像(Icon)
動画時間15:50～
・作成＞UI＞画像(Image)　をクリックして画像を生成し、Heroの子に設定
・名前を「Icon」にする
・キャラクター画像を設定
・WidthとHeightを80にする
![1-18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/b7e43f57-95bb-3dee-4aa2-1c1b6d1d0ec0.png)


####HPテキスト（HP）
動画時間16:25～
・作成＞UI＞テキスト(Text)　をクリックしてテキストを生成し、Heroの子に設定
・名前を「HP」にする
・中央揃えにする
・Font StyleをBoldにする
・位置をHeroの下にする
・白色にする
・Font Sizeを35にする
![1-19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/8a09ae88-03f6-fe0c-9190-25fd872159cb.png)

![1-20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/b95c8921-2af3-002a-9606-45f32fe95079.png)


#敵ヒーロー(EnemyHero)の作成
動画時間17:15～
・Heroを複製
・名前を「EnemyHero」にする
・Pos Yのマイナスを消して画面の上側に表示されるようにする
・HPテキストのPos Yのマイナスを消して敵ヒーローの上側に表示されるようにする
・Iconの画像を敵のキャラクター画像にする
![1-21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/5d0445d6-e8c1-1b10-38e4-c6457eb6f8ff.png)


#ターンエンドボタン(TurnEndButton)の作成
動画時間17:45～
・作成＞UI＞ボタン(Button)　をクリックしてボタンを生成し、Canvasの子に設定
・名前を「TurnEndButton」にする
・画面の右側に配置
・Heightを50、Widthを120にする
![1-22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/dc6848dc-af05-8dc5-bb6d-631742ea0aaa.png)

・テキストを「TURN END」にする
・Font StyleをBoldにする
・Font Sizeを20にする
![1-23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/0e58a1ee-b924-112e-8781-e1e3056a2a06.png)


#制限時間(TimeText)の作成
動画時間18:38～
・作成＞UI＞テキスト(Text)　をクリックしてテキストを生成し、Canvasの子に設定
・名前を「TimeText」にする
・ターンエンドボタンの上になるように配置
・中央揃えにする
・白色にする
・フォントサイズを30にする
・テキストを「30」にする
・Widthを60、Heightを50にする
・Font StyleをBoldにする
![1-24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/aec29545-13bc-89b0-9b4a-30d6ab9f0d04.png)


#コストテキスト(CostText)の作成
動画時間19:15～
・TimeTextを複製
・名前を「CostText」にする
・画面右側の手札の上に配置する
・青色にする
![1-25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/088edab9-c566-2d5b-90d7-d3da91941a8b.png)


####敵コストテキスト(EnemyCostText)
動画時間19:55～
・CostTextを複製
・名前を「EnemyCostText」にする
・Pos Yのマイナスを消して画面の上側に表示されるようにする

***
 #1 の内容はここまで
↓のようなゲーム画面ができていればいいはずです
![1-26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617902/a61bac3f-5b71-3076-2bee-058bdcafd076.png)

#感想
今回はUIオブジェクトをぺたぺた配置してゲーム画面つくるだけなのでUnityになれてる人ならサクサクできそう。
山札、墓地、カードの効果なんかはこの講座のゲームでは表示されないようなので表示したければオブジェクトを追加する必要があると思う。

***
次回はこちら
[【スタジオしまづ】カードゲームの作り方を学んでみる #2 カードの生成](https://qiita.com/kreinto/items/06cc953ebe185f55f100)