我有一个由其他类继承和实现的抽象类,在这些类中我调用返回的抽象类的公共方法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;
我在某个地方错了,我找不到解决方案