Страница 1 из 1

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

СообщениеДобавлено: 06 июл 2018, 23:51
Ezekiel
Здравствуйте!

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

Синтаксис:
Используется 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.

Периодически вызывается метод, который убирает видимость одних объектов и показывает другие,но возникла проблема. Если альфу трогать в цикле, то объект становится моментально прозрачный, а если цикл убрать, то он исчезает плавно. Если подключить отладку, то цикл спокойно выполняется, потихоньку видимость уходит, но на сцене всё не так. Кто-нибудь знает как это обойти?

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

СообщениеДобавлено: 07 июл 2018, 00:05
Anonymyx
Надо через корутинку...
Синтаксис:
Используется 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 кадр.

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

СообщениеДобавлено: 07 июл 2018, 00:27
Ezekiel
Делал через корутину, вот такой тестовый код вызывающий её из старта.
Синтаксис:
Используется 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;
    }
}


Всё равно исчезает моментом. Вроде по всем примерам должно работать, но где-то ошибка и я никак её найти не могу.

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

СообщениеДобавлено: 07 июл 2018, 00:28
Ezekiel
Всё, понял!

Надо yield return null внутрь цикла, спасибо!

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

СообщениеДобавлено: 07 июл 2018, 08:51
Cr0c
Что такое yield return null и сколько времени длится затухание? ))) вот эти два вопроса, которые послужили причиной этой проблемы ))