DOTweenでフェードイン・フェードアウト【Unityメモ】

今回はUnityでDOTween(HOTween v2)を利用して、画像を動かしたりフェードイン・フェードアウトをしてみます。

はじめに

Unityのバージョンは2021.3.14f1です。

ゲームクリア時に出てくる下記の様なものを作成していきます。

DOTweenの追加は下記にて記載しています。

画像アセットの追加

まずはUnityAssetStoreにアクセスして、2DCasualUIHDをマイアセットに追加します。

PackageManagerからDownloadをします。

Download後に全てをimport。

これで準備完了です。

実装開始

ここから実際に作成していきます。簡単にUIを作成した後、スクリプトで実装していきます。

UIの作成

Hierarchyで右クリックして、「UI」→「Image」を追加。

名前をPanelに変更して、幅と高さ、SourceImageを変更して下記の様にします。

Panel配下で「UI」→「Image」を追加

名前をPanelTitleにして位置や幅、高さを変更、SourceImageとColorを変更。下記の様にします。

PanelTitleの配下に「UI」→「Text-TextMeshPro」を追加。

テキストを変更して下記の様にします。

「Panel」の配下に「UI」→「Canvas」を追加。

名前をStarsに変更し、更にその配下に「UI」→「Image」を追加

SourceImageを変更して下記の様に配置。

コピーして3つ、下記の様に配置します。

これでとりあえず簡単なUIの完成。これをDOTweenを利用して動かしてみます。

スクリプトの作成

まずは下記スクリプトを作成。DOTweenを使わず、パネルを有効/無効を切り替えてみます。

using UnityEngine;

public class fade : MonoBehaviour
{

    [SerializeField] private GameObject Panel;

    private void Update()
    {
        if (Input.GetKey(KeyCode.Space))
            Panel.SetActive(true);

        if (Input.GetKey(KeyCode.A))
            Panel.SetActive(false);
    }
}

パラメータをセット

実行すると下記の様な感じでスペースキーを押すとパネルが有効になります。「パッ」と出てくる感じですね。これをDOTweenを使って動きを付けてみます。

スクリプトを下記に変更。

using UnityEngine;
using DG.Tweening;

public class fade : MonoBehaviour
{
    [SerializeField] private RectTransform rectTransform;

    private float fadeTime = 0.6f;
    private float fadePos = 1000f;

    private void Update()
    {
        if (Input.GetKey(KeyCode.Space))
            FadeIn();

        if (Input.GetKey(KeyCode.A))
            FadeOut();
    }

    private void FadeIn()
    {
        rectTransform.transform.localPosition = new Vector3(0f, fadePos, 0f);
        rectTransform.DOAnchorPos(new Vector2(0f, 0f), fadeTime, false);
    }
    private void FadeOut()
    {
        rectTransform.transform.localPosition = new Vector3(0f, 0f, 0f);
        rectTransform.DOAnchorPos(new Vector2(0f, fadePos), fadeTime, false);
    }
}

実行すると下記の様な感じ、上からパネルが出てくる動きになります。

フェードイン・フェードアウト

PanelにCanvasGroupをアタッチ。

スクリプトを下記に変更。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class fade : MonoBehaviour
{
    [SerializeField] private CanvasGroup canvasGroup;
    [SerializeField] private float fadeTime;

    private float fadePos = 1000f;

    private void Update()
    {
        if (Input.GetKey(KeyCode.Space))
            FadeIn();

        if (Input.GetKey(KeyCode.A))
            FadeOut();
    }

    private void FadeIn()
    {
        canvasGroup.alpha = 0f;
        canvasGroup.DOFade(1, fadeTime);
    }

    private void FadeOut()
    {
        canvasGroup.alpha = 1f;
        canvasGroup.DOFade(0, fadeTime);
    }
}

パラメータをセットします。

実行すると下記の様な感じに。

タイトルとURLをコピーしました