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.