Unity3d C#实现对PlayableDirector组件的控制中断至最后的状态

问题

标题的控制中断至最后的状态,这个需求有点特殊,就是播放中的动画不进行播放了,而是跳到动画结束的状态。先看看PlayableDirector组件的官方说明文档:

在这里插入图片描述

这里发现播放、暂停、恢复和停止这些都有现成的函数。
我的需求就是第一次进入场景播放一次PlayableDirector,切换到其它场景时后,再切换回来时是跳到动画结束的状态。按理来说是不勾选playOnAwake,切换时调用停止函数(Stop)即可控制了,可是并不行。在正在播放时切换到其它场景,切换回来时并不能回到最终的状态,而是播放中的暂停效果,而且调用控制函数也没用。

控制方法

经过几次尝试终于找到控制它只播放一次,而且切换回来后不播放、也不是暂停状态的效果。

勾选playOnAwake,让它每次切换回来都播放,其它的就是脚本控制了。
在这里插入图片描述

播放动画函数(PlayableDirector好像只会播放一次):

    public void PlayInitAnim() {
        pd.initialTime = 0;
        pd?.Play();
    }

场景启用时不播放,修改初始时间至播放后,这样保证了第一次不控制也不会播放,并激活PlayableDirector节点:

    private void OnEnable()
   {
       pd.initialTime = 7;
       pd?.Stop(); 
       pd?.gameObject.SetActive(true);
   }

场景切换时,关闭PlayableDirector节点:

    private void OnDisable()
    {
        pd?.gameObject.SetActive(false);
    }

如上的控制就可以实现了需求的效果了,勾选playOnAwake配合 pd?.gameObject.SetActive(false/true)目的就是每次都会自动播放,在播放时控制播放的初始时间并且调用停止函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值