Моментально исчезает спрайт при изменении альфы в цикле

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Моментально исчезает спрайт при изменении альфы в цикле

Сообщение Ezekiel 06 июл 2018, 23:51

Здравствуйте!

Написал скрипт для управления видимостью различными объектами. Всё это дело засунул в цикл, вот кусочек:

Синтаксис:
Используется csharp
var color = testSprite.color;
        while (color.a > 0f)
        {
            color.a -= 0.0005f;
            color.a = Mathf.Clamp(color.a, 0, 1);
            testSprite.color = color;
        }

, testSprite - это SpriteRenderer.

Периодически вызывается метод, который убирает видимость одних объектов и показывает другие,но возникла проблема. Если альфу трогать в цикле, то объект становится моментально прозрачный, а если цикл убрать, то он исчезает плавно. Если подключить отладку, то цикл спокойно выполняется, потихоньку видимость уходит, но на сцене всё не так. Кто-нибудь знает как это обойти?
Ezekiel
UNец
 
Сообщения: 3
Зарегистрирован: 06 июл 2018, 23:30

Re: Моментально исчезает спрайт при изменении альфы в цикле

Сообщение Anonymyx 07 июл 2018, 00:05

Надо через корутинку...
Синтаксис:
Используется csharp
IEnumerator FadeOut()
{
var color = testSprite.color;
        while (color.a > 0f)
        {
            color.a -= 0.0005f;
            color.a = Mathf.Clamp(color.a, 0, 1);
            testSprite.color = color;
yield return null
        }
}

иначе цикл выполнится за 1 кадр.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Моментально исчезает спрайт при изменении альфы в цикле

Сообщение Ezekiel 07 июл 2018, 00:27

Делал через корутину, вот такой тестовый код вызывающий её из старта.
Синтаксис:
Используется csharp
 private void Start()
    {
            StartCoroutine(ChangeVisible());
    }

    IEnumerator ChangeVisible()
    {
        var color = testSprite.color;
        while (color.a > 0f)
        {
            color.a -= 0.0005f;
            color.a = Mathf.Clamp(color.a, 0, 1);
            testSprite .color = color;
        }
        yield return null;
    }
}


Всё равно исчезает моментом. Вроде по всем примерам должно работать, но где-то ошибка и я никак её найти не могу.
Ezekiel
UNец
 
Сообщения: 3
Зарегистрирован: 06 июл 2018, 23:30

Re: Моментально исчезает спрайт при изменении альфы в цикле

Сообщение Ezekiel 07 июл 2018, 00:28

Всё, понял!

Надо yield return null внутрь цикла, спасибо!
Ezekiel
UNец
 
Сообщения: 3
Зарегистрирован: 06 июл 2018, 23:30

Re: Моментально исчезает спрайт при изменении альфы в цикле

Сообщение Cr0c 07 июл 2018, 08:51

Что такое yield return null и сколько времени длится затухание? ))) вот эти два вопроса, которые послужили причиной этой проблемы ))
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 19