使用UI滑块控制光强度

时间:2018-11-02 09:19:36

标签: c# unity3d

我正在Unity中进行2D游戏,我想知道我们如何使用游戏选项菜单中的滑块管理亮度。我想知道解决该问题的步骤。

2 个答案:

答案 0 :(得分:2)

订阅滑块的onValueChanged事件,以在滑块值更改时得到通知。发生这种情况时,将滑块的值分配给灯光的强度值:Light.intensity = Slider.value

就是这样。

//Add your slider from the Editor
public Slider sliderRef;
//Add your light from the Editor
public Light lightRef;

void OnEnable()
{
    //Subscribe to the Slider Click event
    sliderRef.onValueChanged.AddListener(sliderCallBack);
}

//Will be called when Slider changes
void sliderCallBack(float value)
{
    Debug.Log("Slider Value Changed: " + value);
    lightRef.intensity = sliderRef.value;
}

void OnDisable()
{
    //Un-Subscribe To Slider Event
    sliderRef.onValueChanged.RemoveAllListeners();
}

答案 1 :(得分:0)

我想有几种选择取决于您希望达到的目标。但是这些浮现在脑海:

  1. 在相机前面使用半透明的黑色四边形,只需更改材质颜色,这可能是最简单的。缺点,由于在整个屏幕上显示Alpha,会降低性能

  2. 使用后期处理效果https://docs.unity3d.com/Manual/PostProcessingOverview.html。缺点,会降低性能

  3. 如果您使用的是自定义着色器,则可以使用一个全局变量来定义亮度https://docs.unity3d.com/ScriptReference/Shader.SetGlobalFloat.html

  4. 找到一种方法来操纵手机的固有亮度,这会有些棘手,并且可能不是您想要的效果