今回、ゲーム開発に興味を持ちunityでカードゲーム作成を試みて、Youtubeやネットのブログなどで公開されているコードを意味を調べつつ丸写しで打ち込んでいます。
しかし、カードの移動や手札の作成などはできるのですが**カードの情報が一枚目のものしか出てこず二枚目以降のカードがでてこない状況です。**ちゃんと二枚目以降のカードの情報は登録してあります。
何度も作り直し、コードの間違いなども確認してるのですが見当たりません。
是非知恵を貸してください。```ここに言語を入力
カードのデータを反映させるために、iconやTextの設定されたCARDをprefab化したものにCardControllerとCardViewをアタッチしました。そのあと最初に設定したCardのTextやiconをCardViewのスクリプトのicon、Text欄にドラッグしました。
CardController↓
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class CardController : MonoBehaviour 5{ 6 public CardView view; // カードの見た目の処理 7 public CardModel model; // カードのデータを処理 8 9 private void Awake() 10 { 11 view = GetComponent<CardView>(); 12 } 13 14 public void Init(int cardID) // カードを生成した時に呼ばれる関数 15 { 16 model = new CardModel(cardID); // カードデータを生成 17 view.Show(model); // 表示 18 } 19} 20コード
CardView↓
using
1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4 5public class CardView : MonoBehaviour 6{ 7 [SerializeField] Text nameText, powerText, costText; 8 [SerializeField] Image iconImage; 9 10 public void Show(CardModel cardModel) // cardModelのデータ取得と反映 11 { 12 nameText.text = cardModel.name; 13 powerText.text = cardModel.power.ToString(); 14 costText.text = cardModel.cost.ToString(); 15 iconImage.sprite = cardModel.icon; 16 } 17} 18コード
カードデータはCardEntityというスクリプトでCardEntityListというフォルダで管理しています。
CardEntity↓
dEntityC#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5[CreateAssetMenu(fileName = "CardEntity", menuName = "Create CardEntity")] 6 7public class CardEntity : ScriptableObject 8{ 9 public int cardID; 10 public new string name; 11 public int cost; 12 public int power; 13 public Sprite icon; 14コード
そしてGameManagerというスクリプトにカード2を反映させるためのコードとして以下のコードを打ちました
meManagerC#
1 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class GameManager : MonoBehaviour 7{ 8 [SerializeField] CardController cardPrefab; 9 [SerializeField] Transform playerHand, playerField, enemyField; 10 11 void Start() 12 { 13 StartGame(); 14 } 15 16 void StartGame() 17 { 18 CardController card = Instantiate(cardPrefab, playerHand); 19 card.Init(2); 20 } 21} 22コード
しかしCardをPrefab化する前に設定していたiconなどしか反映されずカードの種類が増えません。
もう一つてCardModelというスクリプトも作りました
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CardModel { public int cardID; public string name; public int cost; public int power; public Sprite icon; public CardModel(int cardID) // データを受け取り、その処理 { CardEntity cardEntity = Resources.Load<CardEntity>("CardEntityList/Card" + cardID); // CardEntityのパス cardID = cardEntity.cardID; name = cardEntity.name; cost = cardEntity.cost; power = cardEntity.power; icon = cardEntity.icon; } } コード
問題解決に至る情報を提供できているか自分でもわからないので不足している情報があればお手数ですが教えて下さい。
回答1件
あなたの回答
tips
プレビュー