Я пытаюсь воспроизвести одно видео, затем другое после этого если не будет вызвано действие «пропустить» во время любого из видео, которое должно остановить их обоих и продолжить код. Это не работает, если вы пропускаете первое видео - второе все равно воспроизводится.
Мое внешнее логическое значение _isSkip либо сбрасывается обратно на false, либо более скорее всего, он использует начальное значение, и в этом случае как мне заставить WaitUntil проверять значение во время его запуска?
Код: Выделить всё
private bool _isSkip;
private void SkipVideos() {
_isSkip = true;
Media.VideoStop();
}
private async UniTaskVoid StartMode() {
// this called by StartMode().Forget();
_isSkip = false;
// video1 already playing, takes 7.1s
// SkipVideos can be called during first await OR second, and it should skip BOTH videos
await UniTask.WhenAny(UniTask.Delay(7140), UniTask.WaitUntil(() =>_isSkip == true));
var delay = Media.VideoPlay("video2"); // returns millisecond length of video
// if SkipVideos was called during first delay, when we get to here _isSkip is false, why?
await UniTask.WhenAny(UniTask.Delay(delay), UniTask.WaitUntil(() =>_isSkip == true));
// other code that should be done after both vids finish OR skip was triggered, go here...
}
Я думал, что Media.VideoPlay может быть асинхронным в будущем для аккуратности, но оставил вопрос как есть.
Подробнее здесь: https://stackoverflow.com/questions/792 ... wait-tasks