using Cysharp.Threading.Tasks; using System; using System.Collections.Generic; using System.Threading; using TMPro; using UnityEngine; public class TimerestDisplay : MonoBehaviour { [SerializeField] private List canvasGroups; [SerializeField] private List Labels; public void Init() { if(G.EndGameChecker.TimeRest <= 0) { foreach (CanvasGroup group in canvasGroups) group.alpha = 0; } else { foreach(CanvasGroup group in canvasGroups) group.alpha = 1; CancellationToken ct = this.GetCancellationTokenOnDestroy(); UpdateTimers(ct).Forget(); } } private async UniTask UpdateTimers(CancellationToken ct) { while (!ct.IsCancellationRequested) { foreach (var label in Labels) { TimeSpan time = TimeSpan.FromSeconds(G.EndGameChecker.TimeRest); label.text = time.ToString(@"mm\:ss"); } if (G.EndGameChecker.TimeRest < 0) break; //проверить работу этой шляпы await UniTask.Delay(1000, cancellationToken: ct); } } }