You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#响应式视频滑块:拖动时视频帧同步问题求助

视频进度条拖动同步解决方案

你当前的代码只在点击进度条时更新视频时间,拖动滑块过程中没有实时响应,所以才会出现帧不同步的问题。要实现类似YouTube的拖动实时预览效果,需要监听滑块的全流程事件,同时处理播放状态的切换,具体实现如下:

核心思路

  • 监听滑块的拖动开始、值变更、拖动结束三个事件,覆盖整个拖动流程
  • 拖动时暂停视频,实时同步滑块值到视频时间;拖动结束后恢复播放(如果之前在播放)
  • 视频正常播放时,反向同步视频时间到滑块,保证进度条自动前进

完整代码实现

首先定义必要的组件引用和状态变量:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class VideoProgressController : MonoBehaviour
{
    public Slider videoProgressBar;
    public VideoPlayer videoPlayer;
    private bool isDraggingSlider = false;

    void Start()
    {
        // 绑定视频准备完成事件,初始化进度条最大值
        videoPlayer.prepareCompleted += OnVideoPrepared;
        // 绑定滑块相关事件
        videoProgressBar.onDragStart.AddListener(OnProgressBarDragStart);
        videoProgressBar.onValueChanged.AddListener(OnProgressBarValueChanged);
        videoProgressBar.onDragEnd.AddListener(OnProgressBarDragEnd);
    }

    // 视频加载完成后设置进度条最大值为视频总时长
    void OnVideoPrepared(VideoPlayer vp)
    {
        videoProgressBar.maxValue = (float)vp.length;
    }

    // 开始拖动滑块时暂停视频
    public void OnProgressBarDragStart()
    {
        isDraggingSlider = true;
        if (videoPlayer.isPlaying)
        {
            videoPlayer.Pause();
        }
    }

    // 滑块值变化时实时更新视频时间
    public void OnProgressBarValueChanged(float value)
    {
        if (isDraggingSlider)
        {
            videoPlayer.time = value;
        }
    }

    // 结束拖动后恢复播放(如果之前在播放)
    public void OnProgressBarDragEnd()
    {
        isDraggingSlider = false;
        if (!videoPlayer.isPlaying)
        {
            videoPlayer.Play();
        }
    }

    // 视频播放时自动更新进度条
    void Update()
    {
        if (!isDraggingSlider && videoPlayer.isPlaying)
        {
            videoProgressBar.value = (float)videoPlayer.time;
        }
    }
}

注意事项

  1. 在Unity Inspector面板中,将videoProgressBar和videoPlayer拖入对应字段
  2. 确保VideoPlayer的WaitForFirstFrame选项开启,避免视频未加载时进度条值异常
  3. 如果视频是动态加载的,记得在加载完成后重新调用OnVideoPrepared逻辑更新进度条最大值

内容的提问来源于stack exchange,提问作者Shoot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:01:12