LemonteaのUnity部屋

LemonteaのUnity部屋

UnityとかC#のおはなしです~

Unity フェードイン・フェードアウトをコルーチンでつくる(シーン遷移とか場面転換)

youtu.be

こんにちは。レモンティーです。

今回は、コルーチンでフェードアウトをつくってみようと思います。

PanelのColorのアルファ値をフレームごとに増やしてつくります。

さっそくやってみます。


まず、Canvasをスッポリ覆う大きさのPanelをつくります。

f:id:sawalemontea:20170829151712p:plain

次に、Fadeという名前のスクリプトをつくって
↓のように書きました。

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

public class Fade : MonoBehaviour {
    public GameObject Panel;
    float a;

	void Start () {
        a = Panel.GetComponent<Image>().color.a;
	}

//Aキーを押されたらフェード開始
	void Update () {
         if (Input.GetKeyDown(KeyCode.A))
         {
            StartCoroutine(FadePanel());
         }
	}

//フェードアウト自体は↓の処理
    IEnumerator FadePanel()
    {
        while(a < 1)
        {
            Panel.GetComponent<Image>().color += new Color(0, 0, 0, 0.01f);
            a += 0.01f;
            yield return null;
        }
    }
}

最後に、これをアタッチしたオブジェクトのインスペクターから
Panelを指定します。

f:id:sawalemontea:20170829152028p:plain


これでAキーを押すと画面がフェードアウトします。
今回はアルファ値を増やしていますが、減らすように変えればフェードインになると思います。


22行目のnew Color は Color(R,G,B,a)なので
RGBの部分も変えれば黒以外の色にもできます。

いろいろできそうですね。


今回はこれでおしまいです。


関連
コルーチン系
sawalemounity.hatenablog.com
sawalemounity.hatenablog.com