実現したいこと
下の画像のように画像(Image)が貼られたButtonを選択して、DECKにあるButtonを選択するとDECKにあるBUttonの画像(Image)が変わるようにしたい。
OnClickDeck1()メソッドの中でif文やswitch文を使って選択したButtonと同じ画像(Image)をなんらかの方法で取得して(bool値を使って条件分岐させようとしましたが今のところできませんでした)画像(Image)を変えれるようにしたい。
前提
それぞれのButtonにはスクリプトでステータス(攻撃力、防御力、HP)を設定している。
DECK(上のパネル)にあるButtonにはOnClickDeck1()を、それ以外のButtonにはそれぞれの画像(Image)にあったメソッドを設定している
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class CardStatus : MonoBehaviour 7{ 8 // Image コンポーネントを格納する変数 9 private Image m_Image; 10 11 // 各Spriteを格納する変数 12 public Sprite[] card = new Sprite[50]; 13 // public bool[] boolSerectCrad = new bool[50]; 14 15 public float cardHp; 16 float cardAttack; 17 float cardDefens; 18 int cardLv = 20; 19 20 // Start is called before the first frame update 21 void Start() 22 { 23 // Image コンポーネントを取得して変数 m_Image に格納 24 m_Image = GetComponent<Image>(); 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 31 } 32 33 public void Bujyutuka() //ぶじゅつかの超速加速 34 { 35 if (cardLv == 20) 36 { 37 cardHp = 1160; 38 cardAttack = 77; 39 cardDefens = 48; 40 } 41 } 42 43 public void Bora() //*絢爛ノ美* ボラ&アルヒコ&アペイロン 44 { 45 if (cardLv == 20) 46 { 47 cardHp = 895; 48 cardAttack = 90; 49 cardDefens = 68; 50 } 51 } 52 53 public void Furuuku() //機航師弾 フルーク・ツォイク 54 { 55 if (cardLv == 20) 56 { 57 cardHp = 864; 58 cardAttack = 132; 59 cardDefens = 43; 60 } 61 } 62 63 public void Gaburieru() //魂を司る聖天使 ガブリエル 64 { 65 m_Image.sprite = card[0]; 66 //boolSerectCrad[0] = true; 67 if (cardLv == 20) 68 { 69 cardHp = 1190; 70 cardAttack = 99; 71 cardDefens = 40; 72 } 73 } 74 public void OnClickDeck1() /*DECKにあるButtonにいれるメソッド*/ 75 { 76 //m_Image.sprite = card[0]; 77 Gaburieru(); 78 } 79}
試したこと
各メソッド(OnClickDeckメソッドは除く)にbool値を設定し、OnClickDeckメソッド内で条件分岐をさせようとしたができなかった
補足情報(FW/ツールのバージョンなど)
環境:Windows10、VisualStudio2019、Unity2020.1.6f1 Personal
分かりづらいところなどあればご指摘ください。
追記
※コメントアウトしているところはリストでカードの種類を増やそうと試しているところです。一応書いておきます。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6//カードのステータス 7[CreateAssetMenu(menuName = "MyScriptable/Create CardStatus2")] 8public class CardStatus2 : ScriptableObject 9{ 10 public string CardName = ""; 11 public int Level; 12 public int Hp; 13 public int Attack; 14 public int Defense; 15 public Sprite sprite; 16 //public List<CardStatus2> CardStatus2List = new List<CardStatus2>(); 17} 18 19//[System.Serializable] 20/*public class CardStatus2Data 21{ 22 public string CardName = ""; 23 public int Level; 24 public int Hp; 25 public int Attack; 26 public int Defense; 27 public Sprite sprite; 28}*/
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6//プレイヤーのステータス 7public class PlayerStatus : MonoBehaviour 8{ 9 public CardStatus2 CardStatus2; 10 11 public int playerLevel; //プレイヤーのレベル 12 public int playerHp; //プレイヤーのHP 13 public int playerAttack; //プレイヤーの攻撃力 14 public int playerDefense;//プレイヤーの防御力 15 16 void Start() 17 { 18 playerHp = CardStatus2.Hp; //カードのHPを代入する 19 playerAttack = CardStatus2.Attack; //カードのAttackを代入する 20 playerDefense = CardStatus2.Defense; //カードのDefenseを代入する 21 } 22 23} 24
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。