美文网首页
unity 获取TimeLine全部TrackAsset与Ti

unity 获取TimeLine全部TrackAsset与Ti

作者: WOTTOW | 来源:发表于2020-04-17 22:46 被阅读0次

我在一个场景中需要多个固定相机切换,我使用Cinemachine 来当作相机的位置,很方便调试。但是在实际中使用priority切换不同的相机时,会有过度效果。


image.png

我解决的方式就是获取指定TimeLineClip的所消耗的所有时间(时经过clip时间的累加),然后把TimeLine的时间直接跳转到指定TimeLineClip的位置。

获取所有的轨道和每个轨道的Clip

 [Header("播放TimeLine的物体")] public PlayableDirector Director;
    public Dictionary<string, PlayableBinding> bindingDict = new Dictionary<string, PlayableBinding>();   //获取TimeLine的轨道
    public Dictionary<string, List<double>> dicTimelineClips = new Dictionary<string, List<double>>();     //存储TimeLine Clip

    private void Start()
    {
        InitAttributes();
    }


    /// <summary>
    /// 初始化
    /// </summary>
    private void InitAttributes()
    {
        bindingDict.Clear();
        dicTimelineClips.Clear();
        foreach (PlayableBinding pb in Director.playableAsset.outputs)
        {
            if (!bindingDict.ContainsKey(pb.streamName))
            {
                bindingDict.Add(pb.streamName, pb);
                Debug.Log(pb.streamName);
                var track = bindingDict[pb.streamName].sourceObject as TrackAsset;
                if (track != null)
                {
                    List<double> timelineClips = new List<double>();
                    foreach (TimelineClip clip in track.GetClips())
                    {
                        timelineClips.Add(clip.duration);
                        Debug.Log("name:" + clip.displayName + "时间:" + clip.duration);
                    }
                    dicTimelineClips.Add(pb.streamName, timelineClips);
                }
            }
        }
    }

相关文章

网友评论

      本文标题:unity 获取TimeLine全部TrackAsset与Ti

      本文链接:https://www.haomeiwen.com/subject/mgxpvhtx.html