有一个需求,要求第一次打开一个界面触发一个动画播放,关闭界面动画播放关闭,再次打开界面继续上次到播放而不是重新开始播放,如果动画播放结束关闭打开界面入口(即无法在此进入该界面)。
有两种实现方法:
方法1:第一次打开界面开始播放特效动画,调用animator.Play("fx_name")方法,同时获取该动画的播放时长(如果自由一个播放面片的话:animator.GetCurrentAnimatorClipInfo(0)[0].clip.length),启动计时器或者在Upata函数中做逻辑处理,当动画播放结束关闭界面。当动画播放未结束而关闭界面的时候把界面的坐标移动到远处而不是关闭界面,因为一旦关闭界面再次打开的时候特效播放会重新开始。
方法2:第一次打开界面获取上次关闭界面时间,与当前时间做差获得一个时间差,获取当前动画的播放时长,比较两个值,若时间差大于播放时长,重新播放动画,若小于说明还得继续上次播放,调用animator.Play("fx_name",-1, 时间差/播放时长) 或者 animator.PlayInFixedTime("fx_name",-1, 播放时长-时间差) 。当动画播放未结束而关闭界面的时可以直接关闭界面,但是需要记录下关闭界面时间。
当然,也可以通过animator.setTime(x)来改变动画的播放时间。