Есть базовый виртуальный класс с такими методами
Синтаксис:
Используется 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);
}
{
//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;
}
}
{
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().