実現したいこと
コルーチンを使ってテキストのcolor.aを変化させ、フェードを実行しているのですが、
一回フェードイン、フェードインを行った後に、もう一度実行するとcolor.aの値を変化させる処理は
実行されているのですが、見た目上は変化されず表示できずに困っています。
こうなる原因はフェードアウトの処理部分に原因があるのかな?とは思っているのですが、
はっきりとした理由が分かりません。どのようにすれば二回目以降も問題なくフェードイン/フェードアウトの処理を実行できますでしょうか?
フェードの処理スクリプト
cs
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using TMPro; 6 7public class DisplayLookOnStatus : MonoBehaviour 8{ 9 10 private GameObject Player; 11 private LockOnTargetDetector lockOnTargetDetector; 12 public TextMeshProUGUI[] Status; 13 int i; 14 float dis; 15 bool one; 16 public float ol = 0.02f; 17 void Start() 18 { 19 i = 0; 20 one = true; 21 22 Player = KITEIclass.Player; 23 lockOnTargetDetector = KITEIclass.lockOnTargetDetector; 24 } 25 26 void LateUpdate() 27 { 28 if (Input.GetButtonDown("R_StickPress")) 29 { 30 if(lockOnTargetDetector.hitsOb.Count > 0) 31 { 32 if(one) 33 { 34 i = 0; 35 StartCoroutine(FadeIN()); 36 one = false; 37 } 38 }else if(lockOnTargetDetector.hitsOb.Count <= 1) 39 { 40 if(one == false) 41 { 42 i = Status.Length -1; 43 SelectValveActivator.i = 0; 44 StartCoroutine(FadeOUT()); 45 one = true; 46 } 47 } 48 } 49 50 if(lockOnTargetDetector.hitsOb.Count > 0) 51 { 52 dis = Vector2.Distance(Player.transform.position,lockOnTargetDetector.hitsOb[SelectValveActivator.i].transform.position); 53 Status[2].text = " ターゲットまでの距離 : " + dis.ToString("f1") + "m"; 54 } 55 } 56 57 IEnumerator FadeOUT() 58 { 59 while(i >= 0) 60 { 61 Status[i].color -= new Color(0, 0, 0, ol); 62 63 if(Status[i].color.a <= 0) 64 { 65 if(i >= 1) 66 { 67 i--; 68 } 69 } 70 yield return null; 71 } 72 } 73 IEnumerator FadeIN() 74 { 75 while(i < Status.Length) 76 { 77 Status[i].color += new Color(0, 0, 0, ol); 78 Debug.Log("Status[i].color.a : " + Status[i].color.a); 79 80 if(i == 1) 81 { 82 Status[1].text = " 切り替え可能なターゲット数 : " + (lockOnTargetDetector.hitsOb.Count - 1); 83 } 84 85 if(Status[i].color.a >= 1) 86 { 87 if(i < Status.Length) 88 { 89 i++; 90 } 91 } 92 yield return null; 93 } 94 } 95} 96
試したこと
Debug.Logで色々な値を観察しながら原因を探っていたのですが、恐らくStatus[i].color.a
の値が0~1の範囲を超えてしまっている
ことが原因ではないかと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/28 03:11