[Unity 3D] Post ProcessingのBloomの値をスクリプトから変更する方法。

(2025/01/13)

開発環境
  • Unityのバージョン:6000.0.28f1
  • URP環境
  • Bloomの値をスクリプトから変更する方法

    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の設定がリアルタイムに変わります。