由于代码会进行混淆,导致动画事件不可用。于是手动写了个完成的监听。
public static async UniTask AnimationComplete(this Animator ani,Action action)
{
await UniTask.NextFrame();
AnimatorStateInfo info = ani.GetCurrentAnimatorStateInfo(0);
int t = (int)(info.length / info.speed * 1000);
if (t < 0) t = 0;
await UniTask.Delay(t);
if(action != null) action();
}
写完测试发现延迟的时间不对,似乎获取的是默认clip的信息。
解决:在执行监听时需要等待1帧时间