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.
Answer by JamesKaret · Jan 07, 2021 at 03:05 AM
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.
https://forum.unity.com/threads/animation-window-preview-animation-with-specific-start-and-end-frames.467892/
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.
https://github.com/Unity-Technologies/UnityCsReference/blob/61f92bd79ae862c4465d35270f9d1d57befd1761/Editor/Mono/Animation/AnimationWindow/AnimationWindowState.cs#L19
if the the property that you're looking for is public, use its name.
Your answer
Follow this Question
Related Questions
Animation stops playing as soon as AnimationClip.AddEvent is used 0 Answers
Sprites & Animation 1 Answer
How do get access to animation clips in selected model from EditorWindow? 0 Answers
Problem instantiating a dead replacement gameObject for killed enemy 1 Answer
Any way to set AnimatorOverrideController's animation clips programatically? 1 Answer