You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity2D中如何在脚本中引用URP Bloom效果的强度值

在Unity2D URP中通过脚本修改Bloom强度值

核心逻辑

URP的Bloom效果依托Volume组件管理,需先获取对应Volume的Bloom实例,再修改其强度参数。

实现步骤与代码示例

  1. 确保场景中存在带Bloom效果的Volume(全局/局部均可),且URP管线已开启后处理支持。
  2. 创建C#脚本,编写如下逻辑:
using UnityEngine;
using UnityEngine.Rendering.Universal;

public class BloomIntensityController : MonoBehaviour
{
    // 可在Inspector指定目标Volume,为空则自动取全局Volume
    public Volume targetVolume;
    private Bloom bloomEffect;

    void Awake()
    {
        // 自动获取全局Volume(未指定时)
        if (targetVolume == null)
        {
            targetVolume = VolumeManager.instance.stack.GetComponent<Volume>();
        }

        // 从Volume配置中提取Bloom实例
        if (targetVolume.profile.TryGet(out bloomEffect))
        {
            // 可选:初始化强度值
            bloomEffect.intensity.value = 0f;
        }
    }

    // 对外暴露的修改方法,可直接调用
    public void SetBloomIntensity(float newIntensity)
    {
        if (bloomEffect != null)
        {
            // 限制强度范围(按需调整上下限)
            newIntensity = Mathf.Clamp(newIntensity, 0f, 15f);
            bloomEffect.intensity.value = newIntensity;
        }
    }
}

关键细节

  • 必须引用UnityEngine.Rendering.Universal命名空间,否则无法识别URP相关类。
  • Volume.profile.TryGet(out bloomEffect)是获取Bloom实例的核心,因为Volume通过Profile管理所有后效配置。
  • Bloom强度是intensity.value,因为它是FloatParameter类型,需通过.value属性读写数值。

注意事项

  • 若用局部Volume,需确保其优先级高于其他Volume,避免修改被覆盖。
  • 可直接将目标Volume拖入脚本的targetVolume字段,精准指定修改对象。
  • 检查URP管线资源(UniversalRenderPipelineAsset)的Inspector面板,确认Post Processing选项已勾选。

内容的提问来源于stack exchange,提问作者TroiDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:43:26