いんでぃーづ

ゲームメインのブレブレブログ。ゲーム,Unity,デザイン,UI/UX

Post Processing Stack V2の効果をスクリプトから動的に変更する

{スポンサーリンク}

GitHubの公式リポジトリにやり方書いてあったので試した。

Manipulating the Stack · Unity-Technologies/PostProcessing Wiki · GitHub

すでにPostProcess設定済みの前提での解説す。

操作に必要なクラス

PostProcessingStackV2 のクラス定義はここにまとまっている

Namespace UnityEngine.Rendering.PostProcessing | Package Manager UI website

各PostProcess効果ごとに定義されているクラス

DepthOfFieldBloom など、そのものズバリな名称になっています。
スクリプトから設定値を上書きする際に、それぞれのクラスを使います。

・DepthOfField
Class DepthOfField | Package Manager UI website

・Bloom
Class Bloom | Package Manager UI website

PostProcessManager

効果を上書きするために必要なクラスです。
QuickVolume メソッドに前述のPostProcess効果ごとのクラスのインスタンスを渡し、値を上書きします。

Class PostProcessManager | Package Manager UI website

サンプルコード

シーン開始後1秒後にDepthOfFieldの値を変更するスクリプトです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

public class PostProcessManipulator : MonoBehaviour
{

    // Post Process Volume がついているGameObject
    [SerializeField]
    GameObject postProcessGameObject;

    void Start()
    {
        Invoke("FixDOF", 1f);
    }

    void FixDOF() {
      var dof = ScriptableObject.CreateInstance<DepthOfField>();
      dof.focusDistance.Override(4);
      PostProcessManager.instance.QuickVolume(postProcessGameObject.layer, 1, dof);
    }
}

結果

f:id:sugar_affordance:20190306123815g:plain

イジョ!

・使ったモデル


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


Amazon.co.jpアソシエイト


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。