Unity Task.Delay и Time.TimeScale = 0
Написал вот такой вот компонент. Работает, все хорошо. Возник вопрос: а если я допустим поставлю игру на паузу (т.е. сделаю Time.TimeScale = 0). Будет ли задержка таска адаптироваться под это значение? Я думаю, что нет, потому что, с чего бы ей это делать просто так. Вот и собственно вопрос, как это сделать?
public class DelayedAction : MonoBehaviour, IExecutable
{
[SerializeField] private DelayedActionData _data;
[SerializeField] private IExecutable _action;
private CancellationTokenSource _tokenSource;
public void Skip()
{
if (_tokenSource == null) return;
Cancel();
_action?.Execute();
}
public void Execute()
{
Assert.IsNotNull(_data, "Delay data is null!");
Cancel();
_tokenSource = new CancellationTokenSource();
ExecuteAfterDelay();
}
public void Cancel()
{
_tokenSource?.Cancel();
_tokenSource?.Dispose();
_tokenSource = null;
}
private async Task ExecuteAfterDelay()
{
await Task.Delay(TimeSpan.FromSeconds(_data.Delay), _tokenSource.Token);
_action?.Execute();
Cancel();
}
}