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

时间:2015-05-07 02:49:06

标签: c# animation unity3d

我使用动画面板制作动画,动画面板不时交换图像。从互联网上读取,这不是传统动画。

这是动画面板截图:

Animation Panel

然后,我将动画 Animator 组件添加到游戏对象中,并将动画(称为Animation01)分配给它。以下是游戏对象Inspector的屏幕截图:

Inspector Panel

我尝试使用以下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 () {

     }
 }

但动画并没有停止。它在Console中提示通知:

  

在附加的动画列表中找不到默认剪辑。

我错过了什么?

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

1 个答案:

答案 0 :(得分:2)

Unity在其历史中实施了两个动画系统。 动画组件属于legacy animation system,而 Animator 组件属于new animation system。因此,添加这两个组件是没有意义的:您要么使用旧系统,要么使用新系统。

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

因此,如果您想将动画用于非常简单的动画,您只想手动启动动画,那么最好使用传统动画系统。但是组件并不是唯一不同的东西:动画文件本身被标记以确定它们是否“遗留”。默认情况下,在新的统一版本中创建动画时,它属于新的动画系统。如果要将其与遗留动画一起使用,则必须将其标记为旧动画。不幸的是,you'll have to do a little hack to achieve that