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

问题

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

Unity3d C#实现对PlayableDirector组件的控制中断至最后的状态_第1张图片

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

控制方法

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

勾选playOnAwake,让它每次切换回来都播放,其它的就是脚本控制了。
Unity3d C#实现对PlayableDirector组件的控制中断至最后的状态_第2张图片

播放动画函数(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)目的就是每次都会自动播放,在播放时控制播放的初始时间并且调用停止函数。

你可能感兴趣的:(Unity3D,Playable,Unity,PD控制)