设置 UI 滑块来控制后期处理效果?



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

为了让您跟上进度:

  • 我正在使用后处理堆栈的第一个版本,如下所示: https://assetstore.unity.com/packages/essentials/post-processing-stack-83912
  • 我对 C# 很陌生;我正处于学习如何编码的"弗兰肯斯坦"阶段(遵循教程并修改有效的方法,直到它破坏或完成我想要完成的事情(。

我认为我最好的选择是尝试调整我从本教程中学到的关于创建音频音量滑块的知识: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);
}
}

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

  • 2:07 对于滑块的功能,本教程设置了一个与它们指定的自定义方法 (SetVolume( 匹配的动态浮点数。当我尝试使用自定义方法(SetBrightness(设置自己的函数时,我找不到它。我也不确定我是否需要为此步骤设置不同的对象而不是画布。
  • 3:47 在教程中,他们公开了卷的参数,以便可以通过脚本对其进行操作,但我不知道后处理的等效项是什么。

作为记录,我能够按照本教程创建自己的音频滑块,并使其正常工作。

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

更新 七月 09, 2018

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

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;
}
}

最新更新