How can I get current frame of animation clip on Animation window?

How can I get that value?

It's not on test play mode. It's just animation clip preview on edit mode. I saw old forums and it was possible to get it with **UnityAnimationWindow.GetAnimationWindowCurrentTime()** function.


Guess I have to answer my own question.

I was digging through most of unity forums and this is the core of what I want to do.

Unfortunately, some classes are changed to private or protected such as UnityEditorInternel.AnimationWindowState. So, copy and paste those codes aren’t that helpful.

I was playing with System.Object and FieldInfo yada yada… Then I found that all I had to do was matching the TYPE.

Other parts are same. just swap “GetAnimationWindowCurrentFrame” function to this one.

int GetAnimationWindowCurrentFrame()
        UnityEngine.Object w = GetOpenAnimationWindow();
        if (w != null)
            BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
            FieldInfo animEditor = GetAnimationWindowType().GetField("m_AnimEditor", flags);

            Type animEditorType = animEditor.FieldType;
            System.Object animEditorObject = animEditor.GetValue(w);
            FieldInfo animWindowState = animEditorType.GetField("m_State", flags);
            Type windowStateType = animWindowState.FieldType;

            return (int)windowStateType.GetProperty("currentFrame").GetValue(animWindowState.GetValue(animEditorObject));

        return 0;

Hope this is helpful enough if you are looking for something similar.

ps. Then where do you find those “currentFrame” and “activeAnimationClip” stuff?

From here.

if the the property that you’re looking for is public, use its name.