首页 > 解决方案 > 参数“动画师”不存在

问题描述

我是新人,所以我需要一些帮助来调用动画。我试图在第三次碰撞时调用动画,除了这个我没有错误。我不知道该怎么做。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

    public class Lose_Collider : MonoBehaviour
{
int count = 0;
public int score = 0;
public Animator boom;

void Start() {
    boom = GetComponent<Animator>();
}

private void OnTriggerEnter2D(Collider2D collision){
    if(collision.gameObject.name.Contains("UFO")){
        Destroy(collision.gameObject);
        count++;
        score -= 500;
        if(count == 1){
            Destroy(GameObject.Find("HP 3"));
        } else if (count == 2){
            Destroy(GameObject.Find("HP 2"));
        } else {
            Destroy(GameObject.Find("HP 1"));
            boom.SetTrigger("ExpAnimator");
            //boom.SetTrigger(collision.gameObject.name.Contains("UFO").ToString());
            //Destroy(gameObject);
            //SceneManager.LoadScene("Main Menu");
        }
    }
    else if(collision.gameObject.name.Contains("Star")) {
        score += 100;
        Destroy(collision.gameObject);
    }
  }
}

动画师

错误

标签: c#unity3danimationgame-development

解决方案


首先,这不是错误,而是警告。不同之处在于,有了警告,游戏仍然可以运行。警告是有用的提示或提醒某些事情不完全正确,但有内置的错误处理可以安静地处理问题。我永远不会留下警告,因为它们存在让您知道您很可能错过了代码中的某些内容、创建了意外的功能或创建了错误。您的特定警告是指出您的动画树不包含名为 的动画参数ExpAnimato

我将做一个假设,并说您没有Animation Paramater命名ExpAnimator,只是想播放动画或其中的状态。如果您想玩 Animator,只需调用boom.Play. 如果要在动画器上播放动画内部的特定状态,请调用boom.Play("YourStateNameHere"). 此函数调用还有其他参数可以改变动画师处理状态更新的方式。

我在您的代码中看到的另一个问题是您没有分配Boom参考。由于该字段已在检查器中公开并序列化,因此通过将游戏对象从场景拖到字段中来分配它。现在,当您开始游戏时,您可能还会收到关于boom未初始化的空引用异常。

如果您想使用参数将状态从输入状态更改Idle为您的状态ExpAnimation,则需要向动画状态机添加一个新参数。我可以尝试解释它,但我发现如果你看别人这样做会更容易。本教程中没有代码示例,只是实际动画状态机的设置,我认为这是您不熟悉的。


推荐阅读