前提・実現したいこと
ボタンを押したら画像が変わりトランプの柄が表示されるようにしたい
for (var i = 0; i < 13; i++) { D_[i].onClick.AddListener(delegate { D[i].sprite = Deck[i]; }); }
を追加することでD0からD12(ダイヤの1からダイヤの13)までのトランプのボタンを作れると思ったのですが
うまくいきませんでした
発生している問題・エラーメッセージ
Array index is out of range
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; using System.Linq; public class Sinken : MonoBehaviour { public Sprite TBack; public Sprite[] TArray = new Sprite[52]; Image Back; UnityEngine.Sprite[] Deck = new UnityEngine.Sprite[52]; UnityEngine.UI.Image[] D = new UnityEngine.UI.Image[13]; UnityEngine.UI.Button[] D_ = new UnityEngine.UI.Button[13]; UnityEngine.UI.Image[] K = new UnityEngine.UI.Image[13]; UnityEngine.UI.Button[] K_ = new UnityEngine.UI.Button[13]; UnityEngine.UI.Image[] H = new UnityEngine.UI.Image[13]; UnityEngine.UI.Button[] H_ = new UnityEngine.UI.Button[13]; UnityEngine.UI.Image[] S = new UnityEngine.UI.Image[13]; UnityEngine.UI.Button[] S_ = new UnityEngine.UI.Button[13]; // Use this for initialization void Start() { for (var i = 0; i < 13; i++) { D[i] = GameObject.Find("D"+(i+1)).GetComponent<Image>(); D_[i] = GameObject.Find("D" + (i+1)).GetComponent<Button>(); K[i] = GameObject.Find("K" + (i+1)).GetComponent<Image>(); K_[i] = GameObject.Find("K" + (i+1)).GetComponent<Button>(); H[i] = GameObject.Find("H" + (i+1)).GetComponent<Image>(); H_[i] = GameObject.Find("H" + (i+1)).GetComponent<Button>(); S[i] = GameObject.Find("S" + (i+1)).GetComponent<Image>(); S_[i] = GameObject.Find("S" + (i+1)).GetComponent<Button>(); } for (var i = 0; i < TArray.Length; i++) { Deck[i] = TArray[i]; } for (var i = 0; i < 13; i++) { D_[i].onClick.AddListener(delegate { D[i].sprite = Deck[i]; }); } }
試したこと
forを消して
D_[0].onClick.AddListener(delegate { D[0].sprite = Deck[0]; });
のように0~12まで試したときはきちんと動いてくれました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/01 12:57