如何获取动画 Window 的引用?

How to get a reference to the Animation Window?

我正在使用动画师为游戏对象制作动画。我正在将动画与我在编辑器中覆盖的视频相匹配。目前我必须调整视频洗涤器以到达我想要关键点的下一个位置,然后在动画器中计算和更改它。我希望能够用我的视频洗涤器控制动画洗涤器,反之亦然。

The wiki has what I need 动画 window 但我不确定 how/if 我可以通过脚本访问动画 window。

感谢任何帮助。

一般来说,获取某个内置编辑器的特定实例有点困难window,因为您可以同时打开多个相同类型的编辑器。

然而,假设已经有某个 AnimationWindow (CTRL + 6) window 打开你可以简单地做例如

private AnimationWindow animationWindow;

...

// If there is no AnimationWindow open this will also open one
if(animationWindow == null) animationWindow = EditorWindow.GetWindow<AnimationWindow>();

aniamtionWindow.frame = targetFrame;

作为一个小演示

using UnityEditor;
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] [Min(0)] private int frame;

    private AnimationWindow animationWindow;

    private void Update()
    {
        if(animationWindow == null) animationWindow = EditorWindow.GetWindow<AnimationWindow>();

        animationWindow.frame = frame;
    }
}

确保将任何使用 UnityEditor 命名空间的脚本放在名为 Editor 的文件夹中,或者将脚本的相应部分用预处理器标签 (#if UNITY_EDITOR .. .#endif)