Unity Timeline 播放到指定位置


原文

https://www.cnblogs.com/jingjiangtao/p/14274463.html

腳本需要掛載到PlayableDirector組件所在的物體上。

    public class CameraTimelineControl : MonoBehaviour
    {
        [Tooltip("Timeline面板的幀率")]
        public int frameRate = 60;

        private PlayableDirector _playableDirector;
        private float _targetTime;
        private float _deviation = 0.04f;

        private void Awake()
        {
            _playableDirector = GetComponent<PlayableDirector>();
            _playableDirector.timeUpdateMode = DirectorUpdateMode.Manual;
        }

        private void Update()
        {
            UpdateTime();
        }

        public void PlayToFrame(int frame)
        {
            _targetTime = FrameToSeconds(frame);
        }

        public void PlayToSeconds(float seconds)
        {
            _targetTime = seconds;
        }

        private void UpdateTime()
        {
            if (_playableDirector.time > _targetTime + _deviation)
            {
                _playableDirector.time -= Time.deltaTime;
                _playableDirector.Evaluate();
            }
            else if (_playableDirector.time < _targetTime - _deviation)
            {
                _playableDirector.time += Time.deltaTime;
                _playableDirector.Evaluate();
            }
            else if (_playableDirector.time != _targetTime)
            {
                _playableDirector.time = _targetTime;
                _playableDirector.Evaluate();
            }
        }

        private float FrameToSeconds(int frame)
        {
            return (float)frame / frameRate;
        }
    }

 

frameRate字段是Timeline面板所選擇的幀率:

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM