Контролируйте интенсивность света с помощью ползунка пользовательского интерфейса - PullRequest
0 голосов
/ 02 ноября 2018

Я работаю над 2D-игрой в Unity, и мне интересно, как мы можем управлять яркостью с помощью ползунка, который находится в меню параметров моей игры. Я хотел знать, каковы шаги для решения этой проблемы.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Подписаться на событие ползунка 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();
}
0 голосов
/ 02 ноября 2018

Я думаю, есть несколько вариантов, в зависимости от того, чего вы надеетесь достичь; но это приходит на ум:

  1. Используйте полупрозрачный черный четырехугольник перед камерой и просто измените цвет материала, это, вероятно, самый простой способ. Минусы, снизит производительность из-за альфа на весь экран

  2. Использование эффекта постобработки https://docs.unity3d.com/Manual/PostProcessingOverview.html. Минусы, снизит производительность

  3. Если вы используете пользовательские шейдеры, то у вас может быть глобальная переменная, определяющая яркость https://docs.unity3d.com/ScriptReference/Shader.SetGlobalFloat.html

  4. Найдите способ манипулировать собственной яркостью для телефона, это будет немного сложнее и может не дать желаемого эффекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...