Unity timeline动态绑定clip的值

需求

由于项目多相机切换timeline的需求,要给timeline动态赋值,实现从不同机位切换到固定机位的效果,国内技术网站没有找到能简洁实现的代码,所以自己记录一下实现的代码,方便需要的人

思路

1.通过PlayableDirector获取Track

代码

            timelineAsset = (TimelineAsset)director.playableAsset;
            TrackAsset track = timelineAsset.GetOutputTrack(0);

其中director,即为我们要操作的PlayableDirector对象
在这里插入图片描述
2.通过track获取clip,并绑定值

代码
clip的获取似乎只有GetClips这个方法获取迭代类型,可以根据需要转为list

	foreach (TimelineClip clip in track.GetClips())
            {
                CinemachineShot shot = clip.asset as CinemachineShot;
                director.SetReferenceValue(shot.VirtualCamera.exposedName, startCam);
            }

如果不知道要设置的PlayableAsset类型,看这个图
在这里插入图片描述
完整代码

  public class DynamicTimelineBinding : MonoBehaviour
    {
        public PlayableDirector director;
        public TimelineAsset timelineAsset;
        public CinemachineVirtualCamera startCam;

        // Use this for initialization
        private void Start()
        {
                BindTimelineTracks();
        }

        public void BindTimelineTracks()
        {
            timelineAsset = (TimelineAsset)director.playableAsset;
            TrackAsset track = timelineAsset.GetOutputTrack(0);//获取track
            foreach (TimelineClip clip in track.GetClips())
            {
                CinemachineShot shot = clip.asset as CinemachineShot;
                director.SetReferenceValue(shot.VirtualCamera.exposedName, startCam);
                //由于只需要设置第一个的值,所以直接退出
                break;
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值