VolumeのON・OFFをスクリプトで行う

はじめに

この記事ではUnityの映像表現で使われるVolumeについての基本的な機能を解説します。 Volumeとはカメラに対して映像効果を加えるものです。これを実装することでリアルな世界観を表現できますが、
処理が重くなる欠点があります。具体的な表現は下図参照。 今回は下の映像表現の切り替えを行います。

Volumeを使う方法

URP(Universal Render Pipeline)・HDRP(High Definition Render Pipeline)等を導入することで使えるようになります。

導入方法は下のリンクから。HDRPはInstallしたらWizardを使って手っ取り早く設定しましょう。URPの方法は自分が使うようであればブログ投稿していきます。

higashi.hatenadiary.com

Volumeの使用手順

GameObject => Volume =>Global VolumeでSceneにVolumeを挿入する。
今回はSceneに置いただけでカメラに映像効果を加えることができるGlobal Volumeを使います。

Volumeの挿入

Newを押してVolume Profileを作成する。

Global VolumeのInspector


Newを押した後の表示

③VolumeのAdd Override => Post-processing =>Color Adjustmentsを選ぶ

Add OverrideからColor Adjustments選択画面

Color Adjustments設定

①テストColorFilterにチェックを入れてみる。

ColorFilter

②ColorFilterの色を変更。

ColorFilter2
ColorFilter変更した後のGame画面

色の変更を行ったらColorFilterのチェックを外しておく

スクリプト

①以下のスクリプトをGlobal Volumeにアタッチする。

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;

public class CameraColorChange : MonoBehaviour
{
    public Volume _volume;

    void Start()
    {
        _volume.profile.TryGet<ColorAdjustments>(out var color);
        color.colorFilter.overrideState = true;
    }
}

アタッチしたスクリプト

②Volume変数にInspector上に設置してあるGlobal Volumeをセットする。

Global Volumeを設置した

テスト

変更できました。動画が繰り返されているので点滅しているように見えますが、実際には起こりません。

まとめ

スクリプトは数行で完結するが、調べるのには少し時間がかかりました。 Add ComponentされたものはスクリプトでEnableを使えばほとんどが制御できるがVolumeは

- プロファイルにアクセス - OverrideしてあるSRPを指定して取得 - 変数の指定

とプロファイル内容の変更をする手順となります。結構めんどくさい。 調べても自分が欲しい情報には中々ヒットせず公式リファレンスを見て解決できました。

参考サイト

docs.unity3d.com