Почему Coroutine не выполняет ожидание с Action параметром. UNITY

У меня есть абстрактный класс который наследуют и реализуют другие классы, в этих классах я вызываю публичный метод абстрактного класса который возвращает IEnumerator, его сигнатура:

    public IEnumerator ActionAfterDelay(float seconds, Action action)

Планируется что он должен выполнять action после seconds. В итоге я при вызове данного метода не получаю первый Debug.Log, и получает сразу выполнение действия и в консоле появляется второй Debug.Log. То есть я пропускаю данное ожидание, и не понимаю почему это происходит. Вот сам метод из абстрактного класса

    public IEnumerator ActionAfterDelay(float seconds, Action action)
    {
        Debug.Log($"Wait before Action {seconds} seconds");

        yield return new WaitForSeconds(seconds);

        action.Invoke();
        // пробовал и просто вызвать action(); - безуспешно

        Debug.Log("Action TIME!");
    }

Вот вызов данного метода из наследуемого класса, он вызывается в switch:

    case SimpleInfluenceEffectType.Explosion:

        StartCoroutine(ActionAfterDelay(0.25f, () =>
        {
            if (Target.CurrentGameObject.TryGetComponent(out EnemyState enemyState))
            {
                if (enemyState.IsDontExplode)
                {
                    VisualEffect.Instance.InstantiateEffect(
                        Target.UnitState.transform.position,
                        VisualEffect.EffectType.ExplosionShield,
                        Target.UnitState.transform.transform,
                        true);

                    return;
                }
            }

            VisualEffect.Instance.InstantiateEffect(Target.UnitState.transform.position, VisualEffect.EffectType.MobExplosion);

            Target.UnitState.TakeDamage(EffectValue, gameObject);
        }));

        break;

Я где то ошибаюсь, и не могу найти решение


Ответы (1 шт):

Автор решения: Alemkhan Utepkaliev

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

→ Ссылка