C# 无法停止/控制非传统动画

C# 无法停止/控制非传统动画,c#,animation,unity3d,C#,Animation,Unity3d,我使用动画面板制作了一个动画,它可以不时交换图像。从互联网上阅读,这不是一个遗留的动画 以下是动画面板屏幕截图: 然后,我将动画和动画师组件添加到游戏对象,并将称为Animation01的动画指定给它。以下是游戏对象检查器的屏幕截图: 我尝试使用以下C#脚本停止动画: using UnityEngine; using System.Collections; public class Scene1 : MonoBehaviour { public GameObject ball

我使用动画面板制作了一个动画,它可以不时交换图像。从互联网上阅读,这不是一个遗留的动画

以下是动画面板屏幕截图:

然后,我将动画动画师组件添加到游戏对象,并将称为
Animation01
的动画指定给它。以下是游戏对象检查器的屏幕截图:

我尝试使用以下C#脚本停止动画:

 using UnityEngine;
 using System.Collections;
 public class Scene1 : MonoBehaviour {
     public GameObject ball;
     // Use this for initialization
     void Start () {
         ball.animation.Stop();
     }

     // Update is called once per frame
     void Update () {

     }
 }
但动画并没有停止。在控制台中提示一个通知:

在“附加动画”列表中找不到默认剪辑

我错过了什么



更新:通过禁用/删除Animator组件,动画将停止,并且无法由代码控制。我需要通过代码来控制动画。

Unity在其历史上实施了两个动画系统动画组件属于,而Animator组件属于。因此,添加这两个组件毫无意义:要么使用旧系统,要么使用新系统

传统动画系统和新动画系统之间的主要区别在于,新动画系统在控制方式上要先进得多。然而,这也意味着它更复杂。它增加了另一个抽象层次:您可以控制影响特殊状态机行为的变量,而不是自己启动动画


所以,如果您想为非常非常简单的事情使用动画,只需要手动启动动画,那么最好使用传统的动画系统。但是组件并不是唯一不同的地方:动画文件本身被标记以确定它们是否是“遗留”的。默认情况下,在新unity版本中创建动画时,它属于新动画系统。如果要将其与传统动画一起使用,则必须将其标记为传统动画。不幸的是,.

另外,我必须注意:这个问题比大多数关于
unity3d
标签的问题写得好得多。谢谢你的回答。我不想将动画标记为遗留(这样做没有意义)。我禁用了动画组件,我可以看到动画师正在工作(进度条正在移动)。但是,如何通过代码控制“动画控制器”,例如停止动画?正如我所说,“动画控制器”添加了另一层抽象,因此,如果您使用它,代码不必再包含单个动画的概念。相反,您可以修改动画控制器的外部参数,控制器本身决定切换到哪个状态,不同的状态可以附加不同的动画。这里有一个很好的教程:谢谢。或者,我通过启用和禁用Animator组件来启动/停止动画。你当然可以这样做,但这是一个黑客行为。另外,如果您只想控制单个动画,只需启动和停止它,那么我将使用遗留动画系统。在这种情况下,动画师实在是太过份了。谢谢你的建议