Armadilhas de DoTween.IsComplete

Ao usar corrotinas para realizar animação DoTween, espero poder controlá-las para interromper a animação em um determinado momento, então tenho o seguinte método de escrita

while (!tween.IsComplete() && !cancellationToken.IsCancellationRequested)
{
    
    
     yield return null;
}

No entanto, descobri que assim, a corrotina nunca será concluída (ou seja, tween.IsComplete() sempre será falsa), então suspeitei que a interpolação deveria ser eliminada automaticamente, então configurei a interpolação para não eliminar automaticamente, e então era normal, então o que causa isso? Basta olhar o código fonte do IsComplete e você saberá

public static bool IsComplete(this Tween t)
    {
    
    
      if (t.active)
        return t.isComplete;
      if (Debugger.logPriority > 0)
        Debugger.LogInvalidTween(t);
      return false;
    }

Como você pode ver, ele primeiro determinará se a interpolação está ativa. Caso contrário, retornará falso. Portanto, se a interpolação for eliminada automaticamente, fará com que a interpolação seja falsa antes de acessarmos IsComplete.

Supongo que te gusta

Origin blog.csdn.net/qq_37421018/article/details/103134195
Recomendado
Clasificación