1.问题一:Animator 事件帧触发不了?

答:因为调用了下面几个 API,导致动画上的事件帧播放不了了。只能通过在编辑器里面,Toggle 下
Animator 才使得事件帧从新生效。

animator.StopPlayback();
animator.StartPlayback();
animator.StopRecording();

其他见 => animator normalizedtime_Unity中Animator做UI动画的一些细节

2.问题二:normalizedTime 和动画事件的 eventTime 以及 animator.update 的参数 deltaTime 的含义?

答:normalizedTime 动画剪辑的标准化时间。将整段动画的播放时长标准化为 [0, 1] 范围内。Animator.Play 的第三个参数 、AnimatorStateInfo.normalizedTime 都是标准化时间。

NormalizedTime 区别于 AnimationEvent.timeAnimator.Update 的参数 deltaTime。假如动画剪辑的整段播放时长有10秒,deltaTime 指的是第几秒的动画时刻。整段动画剪辑的时长,通过 AnimationClip.length 获取。某一帧(curFrame)的动画时间通过公式 curFrame / AnimationClip.frameRate 求得。

3.问题三:animator.Update 和 animator.Play 的区别?

答:假如从零开始,调用这两个API跳转到动画剪辑的一半时刻,同时,在一半时刻之前有个事件帧。那么 animator.update 将会触发该事件帧;animator.Play 不会触发该事件帧。

Logo

NVIDIA官方入驻,分享最新的官方资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐