GitHubの公式リポジトリにやり方書いてあったので試した。
Manipulating the Stack · Unity-Technologies/PostProcessing Wiki · GitHub
すでにPostProcess設定済みの前提での解説す。
操作に必要なクラス
PostProcessingStackV2 のクラス定義はここにまとまっている
Namespace UnityEngine.Rendering.PostProcessing | Package Manager UI website
各PostProcess効果ごとに定義されているクラス
DepthOfField や Bloom など、そのものズバリな名称になっています。
スクリプトから設定値を上書きする際に、それぞれのクラスを使います。
・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); } }
結果
イジョ!
・使ったモデル