Почему метод выполняется только один раз?

Программирование на Юнити.

Почему метод выполняется только один раз?

Сообщение EagleOwle 06 фев 2017, 20:32

Приветствую.
Есть базовый виртуальный класс с такими методами
Синтаксис:
Используется csharp
public virtual void OnPointerEnter(PointerEventData eventData)
    {
        //Debug.Log("OnPointerEnter");
        UI_Controller.instance.PlaySound((UiSoundEffect.Enter));
        EventSystem.current.SetSelectedGameObject(gameObject);
        SelectEffect();
    }

private void SelectEffect()
    {
        Debug.Log("SelectEffect");

        if (EventSystem.current.currentSelectedGameObject == gameObject)
        {
            StartCoroutine("ShowEffect");
        }
        else
        {
            //StopAllCoroutines();
        }
    }

    private IEnumerator ShowEffect()
    {
        yield return new WaitForEndOfFrame();

        Debug.Log("EndOfFrame");
        CrossfadeEffect();
        SelectEffect();
    }

    public virtual void CrossfadeEffect()
    {
        //Debug.Log("CrossfadeEffect " + name);
    }
 


И класс наследник с такими методам
Синтаксис:
Используется csharp
override public void CrossfadeEffect()
    {
        Debug.Log("CrossfadeEffect " + name);

        if (t <= 1)
        {
            if (fadeDown == true)
            {
                buttonImage.color = Color.Lerp(UI_Controller.instance.normalColor, UI_Controller.instance.highlightedColor, t);
                Debug.Log("fadeDown == true");
            }
            else
            {
                buttonImage.color = Color.Lerp(UI_Controller.instance.highlightedColor, UI_Controller.instance.normalColor, t);
                Debug.Log("fadeDown == false");
            }

            t += fadeSpeed * Time.deltaTime;
        }
        else
        {
            t = 0;
            fadeDown = !fadeDown;
        }
    }
 


Не пойму, почему метод CrossfadeEffect() выполняется только один раз, а корутина ShowEffect() каждый апдейт???
Что я делаю не так?
Т.е. навожу курсор на кнопку. Выполняются все методы один раз и далее только SelectEffect() и ShowEffect().
Если уберу курсор, все остоналвивается. Потом снова курсор навожу, снова всё выполняется один раз и далее только SelectEffect() и ShowEffect().
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27

Re: Почему метод выполняется только один раз?

Сообщение samana 06 фев 2017, 21:50

Проверил ваш код у себя и проблем не увидел. Картинка мигает при наведении.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10