何度も実行してしまうものを一度だけ実行したいです。
ImageのFillAmountが1以上なら、Daimahouboolをtrueにすると書き込めば、一度だけ実行されると思ったのですがtrueの内容が何度も実行されてしまいます。
1以上なら常に実行されるようになっているために、何度も実行してしまうと思うのですが、1度だけ実行する方法を教えていただきたいです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.Playables; 5using UnityEngine.UI; 6 7public class DaimahouScript : MonoBehaviour 8{ 9 private bool Daimahoubool; 10 11 public PlayableDirector director; 12 public Image DaimahouGage; 13 14 public GameObject DaimahouUI; 15 16 public GameObject Book; 17 18 public GameObject MovieBook; 19 public GameObject Touroku; 20 21 // Start is called before the first frame update 22 void Start() 23 { 24 DaimahouGage = DaimahouGage.GetComponent<Image>(); 25 Daimahoubool = false; 26 } 27 28 // Update is called once per frame 29 void Update() 30 { 31 if (DaimahouGage.fillAmount >= 1) 32 { 33 Daimahoubool = true; 34 } 35 36 if(Daimahoubool == true) 37 { 38 Book.GetComponent<bookaction>().enabled = false; 39 director.Play(); 40 Touroku.SetActive(true); 41 MovieBook.SetActive(true); 42 DaimahouUI.SetActive(false); 43 } 44 } 45 46}
スクリプトを以下のように修正しました。
実行は一度だけになったのですが、DaimahouUIが非アクティブになってくれません。
ImageがDaimahouUIの中にあるからでしょうか?
この場合どうすればよいのか教えていただきたいです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.Playables; 5using UnityEngine.UI; 6 7public class DaimahouScript : MonoBehaviour 8{ 9 private bool Daimahoubool = false; 10 11 public PlayableDirector director; 12 public Image DaimahouGage; 13 14 public GameObject DaimahouUI; 15 16 public GameObject Book; 17 18 public GameObject MovieBook; 19 public GameObject Touroku; 20 21 // Start is called before the first frame update 22 void Start() 23 { 24 DaimahouGage = DaimahouGage.GetComponent<Image>(); 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 if (DaimahouGage.fillAmount == 1) 31 { 32 if (!Daimahoubool) 33 { 34 Daimahoubool = true; 35 36 Book.GetComponent<bookaction>().enabled = false; 37 director.Play(); 38 Touroku.SetActive(true); 39 MovieBook.SetActive(true); 40 DaimahouUI.SetActive(false); 41 } 42 } 43 } 44 45}
また、スクリプトを以下のように変更すると非アクティブ化はするのですが点滅しながら非アクティブになってしまいます。
C#
1 void Update() 2 { 3 if (DaimahouGage.fillAmount == 1) 4 { 5 DaimahouUI.SetActive(false); 6 if (!Daimahoubool) 7 { 8 Daimahoubool = true; 9 10 Book.GetComponent<bookaction>().enabled = false; 11 director.Play(); 12 Touroku.SetActive(true); 13 MovieBook.SetActive(true); 14 } 15 } 16 }
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/18 12:21