前提・実現したいこと
unityで神経衰弱をつくっているのですが
同じ数字のカードを引いた場合カードを場から除くという仕組みで手が止まりどうも思いつきません
サンプルコードや考え方のヒントなどをおしえていただけないでしょうか?
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; using System.Linq; public class Sinken : MonoBehaviour { public int count = 0; public int ok = 0; public UnityEngine.Sprite Chack = null; public Sprite TBack; public Sprite[] TArray = new Sprite[52]; Image Back; Button OK; 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() { OK = GameObject.Find("OK").GetComponent<Button>(); 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]; } UnityEngine.Sprite [] shuffle = Deck.OrderBy(i => Guid.NewGuid()).ToArray(); for (var i = 0; i < 52; i++) { var x = i; // for文のスコープ内で変数を宣言 if (x < 13) { D_[x].onClick.AddListener(delegate { D[x].sprite = shuffle[x]; // xを利用する D_[x].interactable = false; count++; }); }else if (x < 26) { K_[(x-13)].onClick.AddListener(delegate { K[(x-13)].sprite = shuffle[x]; // xを利用する K_[(x-13)].interactable = false; count++; }); }else if (x < 39) { H_[(x-26)].onClick.AddListener(delegate { H[(x-26)].sprite = shuffle[x]; // xを利用する H_[(x-26)].interactable = false; count++; }); }else if (x < 52) { S_[(x-39)].onClick.AddListener(delegate { S[(x-39)].sprite = shuffle[x]; // xを利用する S_[(x-39)].interactable = false; count++; }); } } } // Update is called once per frame void Update() { if (count == 2) { for (var i = 0; i < 13; i++) { var x = i; D_[x].interactable = false; K_[x].interactable = false; H_[x].interactable = false; S_[x].interactable = false; } } OK.onClick.AddListener(delegate { if(count == 2) { count = 0; for (var i = 0; i < 13; i++) { var x = i; D[x].sprite = TBack; K[x].sprite = TBack; H[x].sprite = TBack; S[x].sprite = TBack; D_[x].interactable = true; K_[x].interactable = true; H_[x].interactable = true; S_[x].interactable = true; } } }); } }
試したこと
配列の要素を使って判断しようとしたのですが中身がSprite型で扱いがこんなんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 14:20 編集
2018/10/04 14:22
2018/10/04 15:05 編集
2018/10/05 01:39
2018/10/08 06:07