本节介绍视频播放器 (Video Player) 组件可用的不同时间更新模式以及其与这些模式的交互方式。
您可以使用 Video Player 组件来控制视频播放与其他交互行为之间的时序关系。例如,可以将视频播放与动画或音频同步。您可以通过以下时间更新模式执行此操作:
视频播放器遵循 Unity 的捕获帧率 (Time.captureFramerate) 和捕获增量时间 (Time.captureDeltaTime)。
当指定捕获帧率时,视频播放器的播放将变为同步模式,这意味着视频播放器即使必须延迟整体游戏执行,也会以预期时间戳呈现所有帧。捕获帧率的另一优势在于,它还可以阻断预准备和寻址操作,从而产生一致且准确的结果。但是,这可能会减慢游戏执行速度,尤其是在视频与场景的其余部分必须保持同步的情况下。例如,Unity Recorder 利用这种时序特性来实现平滑录制。
捕获帧率仅会影响游戏时间。如果视频播放器在使用捕获帧率时使用了未缩放的游戏时间或音频 DSP 时钟,则视频播放器会忽略捕获帧率并采用异步播放。这意味着,视频播放器会跳过或重复帧(如有需要),并且准备或寻址任务是异步进行的,以防止播放受阻。但是,仅当选择游戏时间作为视频播放器的时间更新模式时,才会发生这种情况。
注意:在 Web 平台上,Unity 的视频播放器不支持与 captureFramerate 同步播放。默认情况下,它采用游戏时间更新模式下描述的普通异步播放。
音频 DSP 时钟来自于 Audio 模块。您可以通过 AudioSettings.dspTime 进行访问。
游戏时间在 Time 模块中进行设置。您可以使用 C# 通过 Time.time 进行访问。当使用游戏时间(也称为缩放游戏时间)时,Unity 遵循 Time 窗口中设置的时间尺度 (Time Scale) 值。还可以使用 C# 通过 Time.timeScale 修改时间尺度 (Time Scale) 值。但是,如果捕获帧率或捕获增量时间具有非零值,则游戏时间会根据控制时间管理器的捕获帧率功能的规则而变化。
注意:捕获增量时间等于 1 除以捕获帧率。这是相同信息的另一种视图。
使用未缩放的游戏时间时,视频播放器会忽略时间尺度 (Time Scale) 值。未缩放的游戏时间来自于 Time 模块。您可以使用 C# 通过 Time.unscaledTime 进行访问。