クリック数によってオブジェクトの表示・非表示を切り替えたいと思っています。
そこでカウンター機能を使って一回目のクリックで非表示、二回目のクリックで表示をする処理を行いました。ここまでで実行すると、1回目で非表示、2回目で表示まではされました。3回以降は反応しませんでした。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class FirstFloor: MonoBehaviour 6{ 7 //表示・非表示オブジェクト 8 public GameObject HImage, EImage, NImage; 9 10 //押された回数を格納する変数 11 int counter = 0; 12 13 const int counterMax = 2; //最大値 14 15 // Detects clicks from the mouse and prints a message 16 // depending on the click detected. 17 18 // Start is called before the first frame update 19 void Start() 20 { 21 HImage.SetActive (false); 22 EImage.SetActive (false); 23 NImage.SetActive (false); 24 } 25 26 27 public void Click() 28 { 29 if (Input.GetMouseButtonUp(0)) 30 { 31 counter++; 32 33 HImage.SetActive(true); 34 EImage.SetActive(true); 35 NImage.SetActive(true); 36 37 if (counter >= counterMax) 38 { 39 40 HImage.SetActive(false); 41 EImage.SetActive(false); 42 NImage.SetActive(false); 43 } 44 } 45 46 } 47}
繰り返すには反復処理を行えばいいかなと思いWhile(true)で行ってみました。(While(true)にすると永遠ループになるためUnityがフリーズするとは書かれていましたが、If設定しているので大丈夫かなと思ったんです、、。)案の定フリーズしました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class FirstFloor: MonoBehaviour 6{ 7 //表示・非表示オブジェクト 8 public GameObject HImage, EImage, NImage; 9 10 //押された回数を格納する変数 11 int counter = 0; 12 13 const int counterMax = 2; //最大値 14 15 // Detects clicks from the mouse and prints a message 16 // depending on the click detected. 17 18 // Start is called before the first frame update 19 void Start() 20 { 21 HImage.SetActive (false); 22 EImage.SetActive (false); 23 NImage.SetActive (false); 24 } 25 26 27 public void Click() 28 { 29 while (true) 30 { 31 if (Input.GetMouseButtonUp(0)) 32 { 33 counter++; 34 35 HImage.SetActive(true); 36 EImage.SetActive(true); 37 NImage.SetActive(true); 38 39 if (counter >= counterMax) 40 { 41 42 HImage.SetActive(false); 43 EImage.SetActive(false); 44 NImage.SetActive(false); 45 } 46 } 47 } 48 } 49}
二回目クリックした後、もう一度この処理をゼロから繰り返すようにしたいのですがどのように知ればいいでしょうか。
(言い換えると、カウンター数が最大値の2になると、カウント0に戻るようにしたいです。)
Void Updateにいれればいいのかなとも思ったのですが、オブジェクトを選択する際にEvent Triggerを使って、Click()を指定してそこをクリックすると処理が行われるようにしているのでUpdateではできないのでは??と疑問を持っています。(Unity初心者なのでわかっていないかもしれません、、)
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/17 12:10