unity中Timeline动画的播放和播放中如何判断播放结束
播放timeline简单,但有时我们希望得到播放完成的回调信息,今天分享下工作中的技巧,然后自己以后也可以随时查阅,谢谢阅读!
1. 照例我们先看下理论知识,Time概述:
使用Unity的Timeline创建电影内容、游戏序列、音频序列和复杂的粒子效果。
使用Unity的Timeline创建的每个剪切场景、电影或游戏序列都由Timeline资源和Timeline实例组成。timeline窗口同时创建和修改timeline资源和timeline实例。
“timeline资源和实例”主题提供了有关“timeline”窗口、“timeline asset”和“timeline instances”之间关系的详细信息。
“timeline工作流”部分提供了有关如何创建timeline资源和timeline实例、录制基本动画、设置类人动画、使用动画覆盖轨迹、子timeline和其他timeline功能的基本步骤。
timeline示例部分提供了timeline包中包含的示例的描述。
2. 当前首先是播放我们的制作好的timeline,如下代码
PlayableDirector playableDirector = m_RoleObject.GetComponent<PlayableDirector>();
playableDirector.Play();
3. 然后就是判断什么时候播放完成
注意完成代码的判断要在MonoBehaviour派生类的Update中完成,如下代码
if (playableDirector.state == PlayState.Playing && playableDirector.time >= (playableDirector.duration * 0.9))
{
Debug.Log("播放完成");
playableDirector.Stop();
playableDirector.time = 0;
m_HangGunBarrel.SetActive(false);
m_GunBarrel.SetActive(true);
}
如上,我发现这行代码(playableDirector.duration * 0.9))中的0.9原来我使用了1.0,出现了问题,然后我修改成了0.9,然后就没什么问题了,毕竟0.9就差0.1就完成,也没什么关系。
然后我将成员time设置为了0,并调用了成员函数Stop(),是为了复位PlayableDirector动画,以便让它可以再次进行重新播放。