参数 'Animator' 不存在
Parameter 'Animator' does not exist
我是 unity 的新手,所以我需要一些关于调用动画的帮助。我正在尝试在第三次碰撞时调用动画,除此之外我没有任何错误。我不知道该怎么办。
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);
}
}
}
首先,这不是错误,而是警告。不同之处在于,在有警告的情况下,游戏仍然可以 运行。警告是有用的提示或提醒,提示某些事情并不完全正确,但有内置的错误处理功能可以安静地处理问题。我永远不会留下警告,因为它们的存在是为了让您知道您很可能错过了代码中的某些内容、创建了意外功能或创建了错误。您的特定警告表明您的动画树不包含名为 ExpAnimato
.
的动画参数
我将假设您没有 Animation Paramater
named ExpAnimator
but simply want to play the animation or a state in it. If you want to play an Animator, simply call boom.Play
. If you want to play a specific state inside of the animation on the animator, call boom.Play("YourStateNameHere")
. There are other parameters 可以改变动画师处理状态更新方式的函数调用。
我在您的代码中看到的另一个问题是您没有分配 Boom
引用。由于字段已经在检查器中公开并序列化,因此通过将游戏对象从场景拖到字段中来分配它。现在,当您开始游戏时,您也可能会收到关于如何未初始化 boom
的空引用异常。
如果您想使用参数将状态从 Idle
的进入状态更改为您的 ExpAnimation
,您需要向动画状态机添加一个新参数。我可以试着解释一下,但我发现如果 watch someone 这样做会更容易。本教程中没有代码示例,只是实际动画状态机的设置,我认为这是您不熟悉的。
我是 unity 的新手,所以我需要一些关于调用动画的帮助。我正在尝试在第三次碰撞时调用动画,除此之外我没有任何错误。我不知道该怎么办。
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);
}
}
}
首先,这不是错误,而是警告。不同之处在于,在有警告的情况下,游戏仍然可以 运行。警告是有用的提示或提醒,提示某些事情并不完全正确,但有内置的错误处理功能可以安静地处理问题。我永远不会留下警告,因为它们的存在是为了让您知道您很可能错过了代码中的某些内容、创建了意外功能或创建了错误。您的特定警告表明您的动画树不包含名为 ExpAnimato
.
我将假设您没有 Animation Paramater
named ExpAnimator
but simply want to play the animation or a state in it. If you want to play an Animator, simply call boom.Play
. If you want to play a specific state inside of the animation on the animator, call boom.Play("YourStateNameHere")
. There are other parameters 可以改变动画师处理状态更新方式的函数调用。
我在您的代码中看到的另一个问题是您没有分配 Boom
引用。由于字段已经在检查器中公开并序列化,因此通过将游戏对象从场景拖到字段中来分配它。现在,当您开始游戏时,您也可能会收到关于如何未初始化 boom
的空引用异常。
如果您想使用参数将状态从 Idle
的进入状态更改为您的 ExpAnimation
,您需要向动画状态机添加一个新参数。我可以试着解释一下,但我发现如果 watch someone 这样做会更容易。本教程中没有代码示例,只是实际动画状态机的设置,我认为这是您不熟悉的。