Затемнение окон Unity по нажатию кнопки

124
08 августа 2019, 04:50

Доброго времени суток.

Имеется кнопка и окно. При нажатии на кнопку окно меняет свою прозрачность. Как сделать так, чтобы изменение степени прозрачности было плавным?

public GameObject AlphaObj;
public Image AlphaImage;
private int AlphaCheck = 0;
void Update()
{
    AlphaImage = AlphaObj.GetComponent<Image>();
}
public void OpenClose()
{
    if (AlphaCheck == 0)
    {
        AlphaImage.color = new Color(AlphaImage.color.r, AlphaImage.color.g, AlphaImage.color.b, AlphaImage.color.a + 1.0f);
        AlphaCheck = 1;
    }
    else
    {
        AlphaImage.color = new Color(AlphaImage.color.r, AlphaImage.color.g, AlphaImage.color.b, AlphaImage.color.a - 1.0f);
        AlphaCheck = 0;
    }                
}

Как вариант, могу запихнуть смену прозрачности в Update с добавлением Time.deltaTime, а в OpenClose оставить смену проверочного значения. Но, быть может, есть вариант без перегрузки такой мелочью Update'а.

Answer 1
  1. код AlphaImage = AlphaObj.GetComponent<Image>(); сильно влияет на производительность если делать это не в Start() или Awake(). И тем более это безсмысленно делать на каждом кадре в апдейте.
  2. Для твоей задачи я советую использовать библиотеку LeanTween или ее аналоги вроде iTween. Там очень много полезных штук, в том числе и плавное изменение параметров. Например так:

     var time = 2.0f;
     var alphaVal = 0.0f;
     LeanTween.alpha(gameObject, alphaVal, time);
    
Answer 2

По мне так такие вещи лучше делать через стандартный аниматор. К нему пишите небольшой контроллер, который обновляет параметры по команде с кнопки и запускается анимация. Вот пример видео на английском как делать.

READ ALSO
Удаление выделенной строчки в DataGridView из базы данных

Удаление выделенной строчки в DataGridView из базы данных

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

109
Вывести на печать 2 листа

Вывести на печать 2 листа

как можно перенести на 2 лист, где: Нижняя челюсть - Левая сторона от 44, хочу перенести на 2 листНо как можно сделать?

140
Стартовая страница приложения

Стартовая страница приложения

Есть приложение на aspnet mvc

122
UnauthorizedAccessException при создании файла

UnauthorizedAccessException при создании файла

ConstantsTEMPFOLDER - Папка "Мои документы" текущего пользователя

118