public static IEnumerator YieldAniFinish(Animator ani,string aniName, UnityAction action)
{
yield return null;
AnimatorStateInfo stateinfo = ani.GetCurrentAnimatorStateInfo(0);
if (stateinfo.IsName(aniName) && (stateinfo.normalizedTime > 1.0f))
{
action();
}
else
{
Instance.StartCoroutine(YieldAniFinish(ani,aniName, action));
}
}
使用
StartCoroutine(PublicFunc.YieldAniFinish(m_ani, "Shang", () => { TaskFinish(); }));
Unity动画同步技巧
本文介绍了一个Unity中用于动画播放结束回调的方法实现。通过递归协程确保动画Shang播放完毕后执行特定任务,展示了如何利用Animator组件的GetCurrentAnimatorStateInfo方法检查当前动画状态。
9523

被折叠的 条评论
为什么被折叠?



