为什么我收到异常 'Space_Soldier_A_LOD1(Clone)' AnimationEvent 'FootStep' 没有接收器!你缺少一个组件吗?
Why i'm getting exception 'Space_Soldier_A_LOD1(Clone)' AnimationEvent 'FootStep' has no receiver! Are you missing a component?
我一个小时前没有这个异常。
我现在正在尝试的任何动画中都会得到它。
例如,在 HumanoidWalk 上,我没有遇到异常,但是这个作为包一部分的动画无缘无故地开始制作这个 exception/s 大概半小时前。
我为角色创建了一个新的动画控制器并创建了新的混合树,然后在混合树中尝试更改默认情况下的一些步行动画我使用了 HumanoidWalk 然后动画不是我自己的步行包和它工作正常。然后我在混合树中尝试了另一个动画,然后出现了这个异常。
我正在使用的附加到角色的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Soldier : MonoBehaviour
{
private Animator anim;
private void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
var inputVelx = Input.GetAxis("Horizontal");
var inputVely = Input.GetAxis("Vertical");
transform.Rotate(0, inputVelx, 0);
anim.SetFloat("VelX", inputVelx);
anim.SetFloat("VelY", inputVely);
anim.SetBool("Aiming", false);
if (Input.GetMouseButtonDown(1))
{
anim.SetBool("Aiming", !anim.GetBool("Aiming"));
}
}
}
如果您查看 Animator 的动画(Unity -> Window -> 动画),您可以在事件线内看到一个白色的小矩形。这个白色矩形代表一个动画事件,它在动画处于当前步骤时被触发。
有关动画事件的更多信息:
https://docs.unity3d.com/Manual/animeditor-AnimationEvents.html
此动画事件尝试调用游戏对象(在您的案例中为士兵)的方法(函数)"FootStep"。
您需要做的是删除此动画事件(白色矩形),或通过 FootStep 函数扩展您的士兵 class:
class Soldier : MonoBehaviour
{
...
public function FootStep() {
// do something
}
...
}
希望对您有所帮助。
我一个小时前没有这个异常。 我现在正在尝试的任何动画中都会得到它。
例如,在 HumanoidWalk 上,我没有遇到异常,但是这个作为包一部分的动画无缘无故地开始制作这个 exception/s 大概半小时前。
我为角色创建了一个新的动画控制器并创建了新的混合树,然后在混合树中尝试更改默认情况下的一些步行动画我使用了 HumanoidWalk 然后动画不是我自己的步行包和它工作正常。然后我在混合树中尝试了另一个动画,然后出现了这个异常。
我正在使用的附加到角色的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Soldier : MonoBehaviour
{
private Animator anim;
private void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
var inputVelx = Input.GetAxis("Horizontal");
var inputVely = Input.GetAxis("Vertical");
transform.Rotate(0, inputVelx, 0);
anim.SetFloat("VelX", inputVelx);
anim.SetFloat("VelY", inputVely);
anim.SetBool("Aiming", false);
if (Input.GetMouseButtonDown(1))
{
anim.SetBool("Aiming", !anim.GetBool("Aiming"));
}
}
}
如果您查看 Animator 的动画(Unity -> Window -> 动画),您可以在事件线内看到一个白色的小矩形。这个白色矩形代表一个动画事件,它在动画处于当前步骤时被触发。 有关动画事件的更多信息: https://docs.unity3d.com/Manual/animeditor-AnimationEvents.html
此动画事件尝试调用游戏对象(在您的案例中为士兵)的方法(函数)"FootStep"。 您需要做的是删除此动画事件(白色矩形),或通过 FootStep 函数扩展您的士兵 class:
class Soldier : MonoBehaviour
{
...
public function FootStep() {
// do something
}
...
}
希望对您有所帮助。