C# 指定变量上的未指定引用异常(unity 3D)

C# 指定变量上的未指定引用异常(unity 3D),c#,animation,scripting,unity3d,C#,Animation,Scripting,Unity3d,我对Unity非常陌生(使用4.5),我正在尝试学习Unity 3D。我有一个小“游戏”,我只想挥动斧头杀死蜘蛛。我已经创建了名为“AxeSwing”的动画和一个小脚本,当我单击我的左按钮时触发动画。问题是,我有一个错误,我的变量“attackAnimationClip”没有分配任何内容。正如您在屏幕截图上所看到的,它是指定的,当我左键单击动画触发器并返回到IdleAxe动画时 下面是脚本: [RequireComponent(typeof(Animation))] public class A

我对Unity非常陌生(使用4.5),我正在尝试学习Unity 3D。我有一个小“游戏”,我只想挥动斧头杀死蜘蛛。我已经创建了名为“AxeSwing”的动画和一个小脚本,当我单击我的左按钮时触发动画。问题是,我有一个错误,我的变量“attackAnimationClip”没有分配任何内容。正如您在屏幕截图上所看到的,它是指定的,当我左键单击动画触发器并返回到IdleAxe动画时

下面是脚本:

[RequireComponent(typeof(Animation))]
public class AttackAnimation : MonoBehaviour {
    public AnimationClip attackAnimationClip;
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButton(0))
            animation.Play(attackAnimationClip.name);
        else if (IsAttackFinished)
            animation.CrossFade(animation.clip.name);
     }

    private bool IsAttackFinished
    {
        get { return animation[attackAnimationClip.name].time > animation[attackAnimationClip.name].length;  }
    }
}

既然您已经将动画附加到游戏对象,您可以执行以下操作:

 animation.Play("AxeSwing");

它不起作用。
Play(AnimationClip)
没有重载,请尝试检查attackAnimationClip是否为空。然后尝试打印
名称
。有时在播放场景时,场景中的一些拖放属性会丢失(通常是预制属性)。它会在每次单击时打印“AxeSwing”