Управление часами с помощью компонента Video Player
В этом разделе описываются различные режимы обновления времени, доступные для компонента Проигрыватель видео, и способы взаимодействия с ними.
Вы можете использовать компонент Проигрыватель видео, чтобы управлять временем воспроизведения видео относительно других интерактивных действий. Например, вы можете синхронизировать воспроизведение видео с анимацией или с аудио. Вы можете сделать это с помощью следующих режимов обновления времени:
- Аудио цифровая обработка сигнала (DSP) часы
- Game время
- Нескалированное время игры
Видеоплеер следует за частотой кадров Unity (Time.captureFramerate) и временем дельты (Time.captureDeltaTime).
Частота кадров
Если вы установите частота захвата кадров на значение выше 0, воспроизведение видеоплеера становится синхронным. Видеоплеер отображает все кадры в ожидаемом времени даже если ему нужно задержать выполнение всей игры.
При ненулевой частоте кадров операции Видеоплеера — включая подготовку и поиск — выполняются синхронно, чтобы обеспечить последовательные результаты. Однако это может замедлить выполнение игры, особенно когда видео должно оставаться синхронизированным с остальной сценой. Например, Unity Recorder использует это особое поведение времени для создания плавных записей.
Скорость кадров записи влияет на видеоплеер только тогда, когда вы устанавливаете режим обновления видеоплеера Time Update Mode (timeUpdateMode) на Game Time (VideoTimeUpdateMode.GameTime).
Если вы установите Time Update Mode на другое значение, Video Player игнорирует частоту кадров захвата и работает асинхронно. Video Player может пропускать или повторять кадры, чтобы оставаться в синхронности, и он выполняет подготовку и поиск операций асинхронно, так что воспроизведение не блокируется.
Примечание: На веб-платформе видеоплеер Unity не поддерживает синхронное воспроизведение с captureFramerate. По умолчанию он использует обычное асинхронное воспроизведение, которое описано в режиме обновления Game Time.
Аудио DSP часы
Аудио часы DSP поступают из модуля Аудио. Вы можете получить к ним доступ через AudioSettings.dspTime.
Game время
Время Game устанавливается в модуле Время. Вы можете получить к нему доступ с помощью C# через Time.time. При использовании игрового времени, также известного как масштабированное игровое время, Unity следует за значением шкалы времени, установленным в окне Время. Вы также можете изменить значение шкалы времени с помощью C# через Time.timeScale. Однако, если частота кадров захвата или время дельты захвата имеют ненулевые значения, время игры изменяется в соответствии с правилами, регулирующими функцию частоты кадров захвата менеджера времени.
Примечание: Время захвата дельта равняется 1, поделенному на частоту кадров захвата. Это другой взгляд на ту же информацию.
Нескалированное время игры
При использовании Немасштабированного времени игры, Видеопроигрыватель игнорирует значение Временной шкалы. Немасштабированное время игры поступает из модуля Время. Вы можете получить к нему доступ, используя C# через Time.unscaledTime.