public void DoEndGameTransition() { var rect = PointsText.GetComponent <RectTransform>(); // "Complicated" tweening with parameters is a pita, especially when the objects have been separated... // why did i do that. // Comments are execution intervals i.e. all code in 2. executes at the same time. var seq = DOTween.Sequence(); // 1. seq.Append(rect.DOScale(0, PointsTextEndEaseDuration).SetEase(PointsTextEndEaseOut)); // 2. seq.AppendCallback(() => { UpgradeBar.Appear(); rect.anchoredPosition = PointsTextEndPosition; }); seq.Append(rect.DOScale(1, PointsTextEndEaseDuration).SetEase(PointsTextEndEaseIn)); // 3. seq.AppendCallback(() => { float upgradeDuration = UpgradeBar.PerformFill(points); DOTween.To(() => points, x => { points = x; UpdateText(); }, 0, upgradeDuration) .SetEase(PointsTextDiminishEase) .OnComplete(OnFinishLevelingTick); }); seq.Play(); }