设置一个 UI 滑块来控制 post 处理效果?

Setting up a UI slider to control post processing effects?

正如标题所说,我正在尝试设置一个 UI 滑块,以便玩家可以在游戏进行时调整一些 post 处理设置(特别是曝光和温度) 运行.

让您快速上手:

我想我最好的办法是尝试调整我从本教程中学到的关于创建音量滑块的知识:https://www.youtube.com/watch?v=YOaYQrN1oYQ&t=122s

这是我到目前为止拼凑的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BrightnessSlider : MonoBehaviour {

    public void SetBrightness (float brightness)
    {
        Debug.Log(brightness);
    }
}

我在教程的特定点遇到的特定问题:

郑重声明,我能够按照本教程创建我自己的音频滑块并顺利运行。

最后一件事:我打开了 post 处理配置文件的脚本,找到了我认为我需要或至少有点相关的变量类型:ColorGradingModel,但老实说我不知道如何处理这些信息。

更新 2018 年 7 月 9 日

从那以后,我一直在查看@Nol 的代码,并让其他人查看并帮助我解决问题。目前,滑块的功能(不确定这是否是正确的术语,但这是我一直坚持的)是通过检查器中的 On Value Changed 字段设置的,但它实际上不是 driving/changing 亮度值.我让别人(比我更有资格)和我一起看。它似乎应该按照他们设置的方式工作,但是在方法和滑块之间的转换中有些东西丢失了。

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

public class BrightnessSlider : MonoBehaviour   
    {
    public Slider slider;
    public PostProcessingProfile Default;
    private ColorGradingModel cgm;

    private void Start()
    {
        //I haven't been able to get this to not return some sort of error, 
        //and I'm not even sure of its usefulness. 
        //I've been keeping it commented out for the most part.
        Default.profile.TryGetSettings(out cgm);
    }

    public void SetBrightness(float brightness)
    {
        ColorGradingModel.Settings settings = cgm.settings;
        settings.basic.postExposure = brightness;
        cgm.settings = settings;
        Debug.Log("Brightness is: " + brightness);  //For testing purposes
    }

}

您似乎掌握了更改设置所需了解的核心内容。不错。

您需要进行一些简单的更改:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing; //How you'll access PPV (Post Processing Volume) models and settings

public class BrightnessSlider : MonoBehaviour {

    PostProcessingVolume ppv; //You can make this public to set in inspector
    ColorGradingModel cgm; //can use ppv.profile.TryGetSettings(out cgm) in Start()

    public void SetBrightness (float brightness)
    {
        cg.[setting you want to change].value = brightness;
    }
}