之前做TimeLine播放控制的时候做了进度条拖动播放功能,但是存在播放速度变慢的问题:
之前的脚本是这么写的(截取错误部分):
void Start()
{
// 添加滑动条值改变的监听事件
timeLineSlider.onValueChanged.AddListener(delegate { ValueChangeCheck(); });
}
void FixedUpdate()
{
if (isPlay)
{
timeLineSlider.value = (float)timelinePlayer.time;
}
}
public void ValueChangeCheck()
{
// 滑动条赋值给timeine
timelinePlayer.time = timeLineSlider.value;
}
这个脚本里,slider的进度值和timeline的进度值相互赋值,我想这就是导致慢放的原因。
修改后的去掉了slider的监听事件,保留Update里timeline进度值赋值给slider,然后新增拖拽接口,脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class SliderManager : MonoBehaviour, IBeginDragHandler, IDragHandler ,IEndDragHandler
{
public TimeLinePlayer Script_timeLinePlayer;
public void OnBeginDrag(PointerEventData eventData)
{
Script_timeLinePlayer.timeLineSlider.onValueChanged.AddListener(delegate { ValueChangeCheck(); });
}
public void OnDrag(PointerEventData eventData)
{
//throw new System.NotImplementedException();
}
public void OnEndDrag(PointerEventData eventData)
{
Script_timeLinePlayer.timeLineSlider.onValueChanged.RemoveAllListeners();
}
//滑动条拖动时触发的函数
public void ValueChangeCheck()
{
Script_timeLinePlayer.timelinePlayer.time = Script_timeLinePlayer.timeLineSlider.value;
}
}