如何在Unity中使用Slider控制视频播放器的播放速度
Unity Slider控制VideoPlayer播放速度实现方法
前置修改说明
你现有的代码只监听了Slider的数值变化并输出日志,没有关联VideoPlayer组件并对其属性赋值,按以下步骤调整即可生效:
1. 调整脚本代码
需要先引入VideoPlayer相关命名空间,声明VideoPlayer变量接收要控制的组件,在值变化回调中为播放速度属性赋值,完整代码如下:
using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class VideoSpeedControl : MonoBehaviour { // 关联UI调速滑块 public Slider speedSlider; // 关联需要控制的视频播放器组件 public VideoPlayer targetVideo; void Start() { // 初始化时同步滑块与视频默认播放速度 speedSlider.value = targetVideo.playbackSpeed; // 绑定滑块值变化监听 speedSlider.onValueChanged.AddListener(OnSpeedChanged); } void OnSpeedChanged() { // 将滑块值赋值给视频播放速度属性 targetVideo.playbackSpeed = speedSlider.value; Debug.Log($"当前播放速度:{speedSlider.value}"); } }
2. 场景组件配置
- 将修改后的脚本挂载到场景中任意激活的游戏对象上
- 将你UI中的调速Slider拖入脚本的
speedSlider参数槽 - 将场景中需要控制的VideoPlayer组件拖入脚本的
targetVideo参数槽 - 选中Slider组件,设置数值范围:
- 普通无级调速可将Min Value设为
0.2,Max Value设为3,覆盖常用的慢放到快放区间 - 如果需要固定档位调速(如0.5x/1x/2x),可勾选Whole Numbers,再自行做数值映射即可
- 普通无级调速可将Min Value设为
3. 异常问题排查
如果调速后出现无声音、音画不同步的问题,优先确认你的视频编码为H.264格式的MP4文件,部分特殊编码的视频不支持变速播放
如果你需要变速时保持声音音调不变,需要给VideoPlayer关联的AudioSource组件添加Pitch Shifter效果器,同步将播放速度赋值给AudioSource的pitch属性
UI参考
内容的提问来源于stack exchange,提问作者Jigen Otsuki
相关产品推荐
相关产品推荐

