【发布时间】:2018-07-05 17:01:33
【问题描述】:
正如标题所说,我正在尝试设置一个 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,但老实说,我不知道如何处理这些信息.
2018 年 7 月 9 日更新
从那以后,我一直在查看 @Nol 的代码,并让其他人查看它并帮助我解决它。目前,滑块的功能(不确定这是否是正确的术语,但这是我一直坚持的)是通过检查器中的 On Value Changed 字段设置的,但它实际上并没有驱动/更改亮度值。我让其他人(比我更有资格)和我一起看。看起来它应该按照他们设置的方式工作,但是在方法和滑块之间的转换中有些东西丢失了。
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
}
}
【问题讨论】:
-
这将是艰难的。目前无法真正研究它,我会尽量记住稍后再讨论这个问题。我以前在着色器上做过布尔运算,但不是浮点数。
标签: c# user-interface unity3d slider post-processing