Unity 获取当前动画播放的帧(记录)

网上没找到完整的,改后留个记录
float Remap(float tex, float min, float max, float slefMin = 0, float slefMax = 1)
{
    return (min + (tex - slefMin) * (max - min) / (slefMax - slefMin));
}
IEnumerator OnUpdate()
{
    while (true)
    {
        yield return new WaitForEndOfFrame();
        //当前动画播放时长
        float currentTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime;
        //总时长
        float length = animLength[SelectType.ToString()].length;
        //总帧数 length / (1 / tempclip.frameRate)
        float totalFrame=animLength[SelectType.ToString()].totalFrame;
        //播放时长映射成帧数
        int currentFrame =(int) Remap(currentTime, 0, totalFrame); 
                 
        if (currentFrame >= totalFrame)
        {
           break;
        }
    }
    Debug.Log("结束");
    GameRoot.Instance.StopCoroutine(OnUpdate());

}

猜你喜欢

转载自blog.csdn.net/qq_32274299/article/details/115467563