Post ProcessingでおなじみのBloomですが、ゲームの演出で特定のタイミングでBloomの値を変更したいときがあると思います。 そんなときにBloomの値をスクリプトから変更する方法を紹介します。
1. 任意のゲームオブジェクトに以下のコードをスクリプトをアタッチします。
2. スクリプトをアタッチしたゲームオブジェクトのInspectorのVolumeにBloomエフェクトが含まれるVolumeコンポーネントをアタッチします。
using UnityEngine;
using UnityEngine.Rendering; // Volumeコンポーネントを使用するために必要
using UnityEngine.Rendering.Universal; // Bloomエフェクトを使用するために必要
public class SampleScript : MonoBehaviour
{
public Volume volume; // Bloomエフェクトを含むVolumeコンポーネントへの参照
private Bloom bloom; // 取得したBloomエフェクトへの参照
[Header("Bloom Parameters")]
public float intensity = 0.0f; // エフェクトの強度
public float threshold = 0.9f; // エフェクトの適用閾値
public float scatter = 0.7f; // エフェクトの散乱度
public Color tint = Color.white; // エフェクトの色調
public float clamp = 65472f; // エフェクトのクランプ値
public bool highQualityFiltering = false; // エフェクトの高品質フィルタリング
void Start()
{
volume.profile.TryGet<UnityEngine.Rendering.Universal.Bloom>(out bloom); // Bloomエフェクトを取得
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
bloom.intensity.Override(intensity); // エフェクトの強度を設定
bloom.threshold.Override(threshold); // エフェクトの適用閾値を設定
bloom.scatter.Override(scatter); // エフェクトの散乱度を設定
bloom.tint.Override(tint); // エフェクトの色調を設定
bloom.clamp.Override(clamp); // エフェクトのクランプ値を設定
bloom.highQualityFiltering.Override(highQualityFiltering); // エフェクトの高品質フィルタリングを設定
}
}
}
ゲームを再生して、スペースキーを押すとBloomの設定がリアルタイムに変わります。