如何获得对动画窗口的引用?

Posted

技术标签:

【中文标题】如何获得对动画窗口的引用?【英文标题】:How to get a reference to the Animation Window? 【发布时间】:2022-01-13 01:37:13 【问题描述】:

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

The wiki has what I need 用于动画窗口,但我不确定如何/是否可以通过脚本访问动画窗口。

任何帮助表示感谢。

【问题讨论】:

您希望在构建中执行此操作还是仅在编辑器中执行此操作? @NSJacob1 我只想在编辑器中这样做 那么您的问题是“如何获得对动画窗口的引用”? @derHugo 是的,谢谢,这是一种更好的措辞方式。我将更新我的标题以更有用 【参考方案1】:

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

但是,假设已经打开了某个 AnimationWindow (CTRL + 6) 窗口,您可以简单地执行例如

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) 包装脚本的相应部分

【讨论】:

这正是我想要的,谢谢 :D 对于将来由于保护级别而无法引用 AnimationWindow 的任何人,您需要将 Unity 升级到 2019 年以上的版本

以上是关于如何获得对动画窗口的引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有任务栏条目的情况下获得无父 QWindow

Solidworks如何制作动画

如何统一平移动画窗口?

如何从核心动画对象中引用图层?

如何创建对对象的引用以在 iOS 中对其进行动画处理

如何在 iOS 中获得最流畅的动画?