动画状态 .. 无法播放,因为找不到?

zer*_*erk 1 c# animation unity-game-engine

我正在尝试通过按键盘上的键来开始动画。

为此,我使用以下代码:

[HideInInspector] public Animation animation;

private void Start()
{
    animation = GetComponent<Animation>();
}

private void Update()
{
    if (Input.GetKeyDown("1"))
    {
        animation.Play("AnimationName");
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

动画状态 AnimationName 无法播放,因为找不到!

虽然动画确实开始了,但是我该如何清除此错误?

Lie*_*yer 5

我认为唯一可能的解释是您的动画剪辑未标记为 Legacy。 https://www.unity3dtips.com/zh/the-animation-state-could-not-be-played-because-it-couldnt-be-found/

在这里一步一步编辑:

动画必须标记为旧版才能与动画组件一起使用。

  1. 在项目窗口中选择您要播放的动画剪辑。

  2. 将检查器设置为暴露隐藏变量的调试模式,在这种情况下,它将显示“Legacy”复选框。Unity Inspector Debug Mode

  3. 勾选“Legacy”复选框并将检查器更改回正常模式。Unity Inspector Animation Clip Legacy 复选框


但是您应该知道一件事:如果可能,您应该避免使用旧的播放动画的方式。了解如何使用 Animator 组件。只需创建一个动画师,分配你的动画剪辑,在动画师组件中决定一个布尔值来启动动画,并在你的代码中将其设置为 true(用于基本用途)。当然,除了代码之外还有一些事情要做,但是控制动画、混合不同的动画并根据需要更改它们会更容易(例如,在某个时刻循环或停止动画要容易得多)。它也更容易理解什么时候开始和什么时候播放。