0 支持
31 閲覧

UI TextをフェードアウトしたくてWaitForSecondsを使って調整をしようとしました。
コルーチン処理はDebug.Logで確認すると通っているみたいなのですが、WaitForSeconds処理だけが全く実行されず、使い方を色々調べてもさっぱり分からなくなりました。
あと、テキストもフェードアウトも全くしないのも同時に悩んでいます。
物凄く初歩的なことだと思うのですが、どうか、お分かりになられる方、ご教授お願いいたします。

以下、コードになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TextFadeout : MonoBehaviour
{
public Text text;
int a = 255;

// Start is called before the first frame update
void Start()
{
for (int i = 0; i < 255; i++)
{
text.color = new Color(0, 0, 0, a);
a--;
Debug.Log(a);

StartCoroutine(Wait());
}
}

// Update is called once per frame
void Update()
{

}

IEnumerator Wait()
{
Debug.Log("wait");
yield return new WaitForSeconds(0.3f);
}
}

初心者 (220 ポイント) | 31 閲覧

ログインまたはユーザー登録してから回答してください。

回答 1

0 支持

Start()の中でコルーチンを1回だけ呼び出して、for文をWait()の中に組み込み、for文の中でyield return すれば動作します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TextFadeout : MonoBehaviour
{
    public Text text;
    int a = 255;

    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(Wait());
    }

    // Update is called once per frame
    void Update()
    {

    }

    IEnumerator Wait()
    {
        for (int i = 0; i < 255; i++)
        {
             text.color = new Color(0, 0, 0, a);
             a--;
             Debug.Log(a);
             yield return new WaitForSeconds(0.3f);
        }
    }
}
初心者 (440 ポイント)
0
アキオ様。
有難う御座います!!
なるほど。コルーチンは1回で処理するものなんですね。
色々触っているうちに何度もコルーチンを呼び出した方が良いのかな…と思い、やってみました。
教えて頂いた通りやってみたら、うまくいきました。
ありがとうございました。

関連する質問はありません。

2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

158 質問

153 回答

159 コメント

189 ユーザー