B L O G

ブログ記事

thumbnail

【Unity】DOTweenを使ったフェードイン・フェードアウト

今回はUnity Assettで有名な「DOTween」を使って、フェードイン・フェードアウトの実装方法をご紹介します。
既に「DOTween」プロジェクト内にインポートされてる前提で解説しますので、まだの場合は下記からダウンロードしてください!

環境

  • OS : macOS Sequoia 15.2
  • Unity : Unity6(6000.0.34f1)
  • Rendering Pipeline : URP
  • Unity Assets : DOTweenインストール済み

FadeCanvasの作成

まず、ヒエラルキーの UI > Canvas からフェード用のキャンバスを新規作成します。 次に、Canvasの設定を以下のように行います。

  • Render ModeScreen Space - Overlay に設定
  • Sort Orderを他のゲームオブジェクトより高く設定
  • Graphic Raycasterコンポーネントを削除

Sort Orderを高く設定することで、フェード画像を最前面に表示できます。 また、Graphic Raycasterコンポーネントを削除することで、FadeCanvasは当たり判定を持たず、背後のゲームオブジェクトに対してタップやクリックが可能になります。

続いて、作成したFadeCanvasの子要素としてUI > Imageを追加します。

  • Imageの設定は以下の通りです。
  • Rect TransformStretchを設定
  • LeftRightTopBottom の余白をすべて 0 に設定
  • 色をお好みで設定し、透明度は 0 にしておく

Rect TransformStretchにし、余白を 0 にすることで、画面全体に画像を広げることができます。 次にFadeさせる為のスクリプトを作っていきます。

Fade用のスクリプトの設定

C#スクリプトを新規作成し、名前をFadeとして、コードの内容を下記のようにします。


using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 追加

public class Fade : MonoBehaviour
{
    [SerializeField] private Image _fadeImage; // フェード画像
    [SerializeField] private float _fadeDuration; // フェード時間

    // フェードイン
    public void FadeIn()
    {
        _fadeImage.DOFade(0f, _fadeDuration);
    }

    // フェードアウト
    public void FadeOut()
    {
        _fadeImage.DOFade(1f, _fadeDuration);
    }
}

まず、DOTweenの機能を使うために、using DG.Tweening;を追加します。
次に、[SerializeField]によって、フェードに使う画像と時間をインスペクターから設定できるようにしています。

そして、今回のポイントは以下のコードです↓


_fadeImage.DOFade(0f, _fadeDuration);

この一文は、それぞれ以下のような意味を持ちます:

  • 変化させる対象 :(_fadeImage
  • Tweenの種類 :(DOFade:アルファ値を変える)
  • 変化後の値, 所要時 : (0f, _fadeDuration)

この1行で「フェード画像のアルファ値を、指定した時間をかけて0(透明)にする」処理を実行しています。

次に、先ほど作成したFadeCanvasにこのスクリプトをアタッチし、フェード画像とフェード時間を設定します。
その後、FadeCanvasとは別に新しくCanvasを作成し、子要素としてボタンButtonを2つ追加します。

このボタンにFadeCanvasFadeOut()FadeIn()を呼び出す処理をそれぞれ設定します。
ここまで設定できたら、ボタンを押すことで画面がフェードアウトするはずです。

フェードに緩急をつける

無事にフェードができただけでも十分ですが、フェードに緩急をつけることで、より本格的な表現が可能になります。
DOTweenには「イージング」と呼ばれる、アニメーションに緩急をつけるオプションがあります。
設定の仕方は簡単で、先程のコードに下記のように追加してあげるだけです。


_fadeImage.DOFade(1f, _fadeDuration).SetEase(Ease.イーズの種類);

イーズの種類の部分に、お好きなイーズ名を入れてあげれば、その動きでフェードを表現できます。

イーズの種類については、下記の記事がとても参考になります↓

ちなに、デフォルトではOutQuadというイージングが設定されており、これは「最初が速く、だんだんゆっくりになる」動きみたいです。

以上、DOTweenを使ったフェードイン・フェードアウト方法でした!

参考

関連する記事