设置一个 UI 滑块来控制 post 处理效果?
Setting up a UI slider to control post processing effects?
正如标题所说,我正在尝试设置一个 UI 滑块,以便玩家可以在游戏进行时调整一些 post 处理设置(特别是曝光和温度) 运行.
让您快速上手:
- 我正在使用 post 处理堆栈的第一版,如下所示:
https://assetstore.unity.com/packages/essentials/post-processing-stack-83912
- 我是 C# 的新手;我正处于学习如何编码的 "Frankenstein" 阶段(遵循教程并修改有效的内容,直到它崩溃或完成我想要完成的事情)。
我想我最好的办法是尝试调整我从本教程中学到的关于创建音量滑块的知识: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 对于slider的功能,教程设置了一个动态float,匹配他们指定的自定义方法(SetVolume)。当我尝试使用自定义方法 (SetBrightness) 设置我自己的功能时,我找不到它。我也不确定是否需要为此步骤设置不同的 object 而不是 canvas。
- 3:47 在教程中,他们公开了卷的参数,以便可以通过脚本对其进行操作,但我不知道 post 处理的等效参数是什么。
郑重声明,我能够按照本教程创建我自己的音频滑块并顺利运行。
最后一件事:我打开了 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;
}
}
正如标题所说,我正在尝试设置一个 UI 滑块,以便玩家可以在游戏进行时调整一些 post 处理设置(特别是曝光和温度) 运行.
让您快速上手:
- 我正在使用 post 处理堆栈的第一版,如下所示: https://assetstore.unity.com/packages/essentials/post-processing-stack-83912
- 我是 C# 的新手;我正处于学习如何编码的 "Frankenstein" 阶段(遵循教程并修改有效的内容,直到它崩溃或完成我想要完成的事情)。
我想我最好的办法是尝试调整我从本教程中学到的关于创建音量滑块的知识: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 对于slider的功能,教程设置了一个动态float,匹配他们指定的自定义方法(SetVolume)。当我尝试使用自定义方法 (SetBrightness) 设置我自己的功能时,我找不到它。我也不确定是否需要为此步骤设置不同的 object 而不是 canvas。
- 3:47 在教程中,他们公开了卷的参数,以便可以通过脚本对其进行操作,但我不知道 post 处理的等效参数是什么。
郑重声明,我能够按照本教程创建我自己的音频滑块并顺利运行。
最后一件事:我打开了 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;
}
}