Хотите контролировать оттенок сцены, используя UI Slider

Я использую инструмент постобработки, чтобы изменить цвета моей сцены (моя сцена включает в себя камеру AR, единственный основной компонент).

Моя цель - изменить цвет сцены с помощью ползунков. Инструмент позволяет мне делать это при его создании, но я хочу убедиться, что я разрешаю пользователю изменять цвет по своему выбору (пытаясь создать приложение для коррекции дальтонизма).

Например, если человек страдает от Deuteranopia и, скажем, смещение оттенка -35 частично позволяет ему видеть цвета, которые не были бы в случае другого человека с таким же типом дальтонизма, оттенок мог бы отложить.

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

Спасибо.

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

Как вы можете видеть моего инспектора здесь, я хочу, чтобы на моем холсте был тот же элемент управления ползунком, только смещение оттенка

1 ответ

Как ты можешь это сделать?

  1. Сделать слайдер: Образ
  2. Установите минимальное и максимальное значения на -255, 255 соответственно: Образ
  3. Добавьте новый скрипт с именем "HueFromSlider": Образ
  4. Добавьте этот код в скрипт:


    using UnityEngine;
    using UnityEngine.PostProcessing;
    using UnityEngine.UI;

    public class HueFromSlider : MonoBehaviour 
    {
        public PostProcessingProfile profile; // A reference to the profile
        ColorGradingModel model; // The color grading model
        ColorGradingModel.Settings settings; // The color grading model settings.

        public Slider slider; // A reference to the slider so that on start it goes back to were it was.

        private void Start()
        {
            model = profile.colorGrading; // Set the model
            settings = model.settings; // Set the settings
            if (slider != null) // Set the slider back to what it was only if it has been referenced.
                slider.value = settings.basic.hueShift;
        }

        public void ChangeHue(float hue)
        {
            settings.basic.hueShift = hue; // Set the hue in the settings
            model.settings = settings; // Set the settings of the model
            profile.colorGrading = model; // set the profile model to the model
        }
    }

  1. Создайте новый профиль постобработки, если у вас его нет: Перейдите в проект, щелкните правой кнопкой мыши и выберите "Создать"> "Профиль постобработки".
  2. В инспекторе перетащите профиль в сценарий и, при необходимости, в ползунок.
  3. В слайдере добавьте обратный вызов "On Value Changed" для "script">ChangeHue. Убедитесь, что вы выбрали его в качестве динамического поплавка. Это должно выглядеть так: Образ
  4. Готово.


Или подготовленный мной пакет: https://drive.google.com/open?id=1coTuy2M5Jlrpvm-vOu3F3B_liddrA19t

Другие вопросы по тегам