コード ```### 前提・実現したいこと Unityでカードゲームを作っています。 そこでカードの効果でテフダを捨てる処理をしたいのですが 捨てるパネルを表示して 確定ボタンを押したら パネル上のカードリストを取得 パネルを閉じる という関数を書いてるのですが ボタンを押すまでプログラムの流れを止めたいです コルーチンをやってみましたがプログラムが進んでしまいます。 どうすればいいでしょうか また、コルーチン以外でボタンの入力待機する方法があったら教えてください。 Unityのバージョンは2019.3.91fです。 初心者なのでよくわかっていないところも多々あると思いますがよろしくお願いします。 ### 発生している問題・エラーメッセージ プログラムの流れを一時停止したい 状態遷移のような雰囲気? ### 該当のソースコード Unity ```ここに言語を入力 public class UiSelectCardPanel : MonoBehaviour { GameManager gameManager; [SerializeField] Transform selectCardSpace = default; int CardNum; bool FixngB; // Start is called before the first frame update void Start() { gameManager = GetComponent<GameManager>(); } public List<int> SelectCard(int CardNumber) { var SelectCardList = new List<int>(); CardNum = CardNumber; //カードパネルの表示 ShowSelectCardPanel(); //ボタン入力待機 StartCoroutine(WaitButton()); //ボタン入力後処理 CardController[] selectSpaceList = selectCardSpace.GetComponentsInChildren<CardController>(); Debug.Log("5"); for (int i = 0; i < CardNumber; i++) { CardController card = selectSpaceList[i]; SelectCardList.Add(card.model.cardId); } //カードパネル閉じる RemoveSelectCardPanel(); return SelectCardList; } private void ShowSelectCardPanel() // 選択カードパネルを出す { gameManager.selectCardPanel.SetActive(true); } private void RemoveSelectCardPanel() // 選択カードパネルを消す { gameManager.selectCardPanel.SetActive(false); } bool FixngB=true; IEnumerator WaitButton() { yield return new WaitWhile(()=>FixngB); } //ボタンを押されたら条件を判定してWaitWhileをTrueにする public void PushBottun() { Debug.Log(CardNum); CardController[] enemyFieldCardList = selectCardSpace.GetComponentsInChildren<CardController>(); if (enemyFieldCardList.Length == CardNum) { FixngB = true; } else { FixngB = false; } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/05 08:14