c# - 非旧版动画无法停止/控制

标签 c# animation unity-game-engine

我使用动画面板制作了一个动画,它会不时地交换图像。从网上看的,这不是传统动画。

这是动画面板屏幕截图:

Animation Panel

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

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 () {

     }
 }

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

Default clip could not be found in attached animations list.

我错过了什么?


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

最佳答案

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

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

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

关于c# - 非旧版动画无法停止/控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091098/

相关文章:

c# - ASP.NET MVC自定义错误处理Application_Error Global.asax?

android - 加载纺车动画

android - NineOldAndroids 中的 LayoutTransition 类..?

android - Unity 3d 在 Android 和 iPhone 上的表现如何?

c# - 无法在 C# 中将子接口(interface)作为参数传递

c# - 如何在 C# 中更改悬停时的光标

ios - 如何水平/从左到右设置动画?

c# - 如何在Unity3d中截取透明背景的屏幕截图?

c# - GetComponent() 或访问字典之间是否存在性能差异?

c# - 如何替换 Linq Cast 表达式?