问题
标题的控制中断至最后的状态,这个需求有点特殊,就是播放中的动画不进行播放了,而是跳到动画结束的状态。先看看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)目的就是每次都会自动播放,在播放时控制播放的初始时间并且调用停止函数。
|