【Unity】‘GameObject‘ AnimationEvent ‘PrintEvent‘ has no receiver! Are you missing a component?
描述在使用AnimationEvent给animation组件挂回调函数的时候出现的错误原因作为事件调用的函数必须是和animation(animator)在同一个gameobject上解决方案把挂在摄像机上的代码部分挪到animation组件同一对象上附录官方文档关于AnimationEvent的实例代码.// 向带有动画器的游戏对象添加一个动画事件using UnityEngine;using
·
描述
在使用AnimationEvent给animation组件挂回调函数的时候出现的错误
原因
作为事件调用的函数必须是和animation(animator)在同一个gameobject上
解决方案
把挂在摄像机上的代码部分挪到animation组件同一对象上
附录
官方文档关于AnimationEvent的实例代码.
// 向带有动画器的游戏对象添加一个动画事件
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
public void Start()
{
// 游戏对象上的现有组件
AnimationClip clip;
Animator anim;
// 新创建的事件
AnimationEvent evt;
evt = new AnimationEvent();
// 设置 AnimationEvent 的参数
// - 这个动画持续2秒
// 这里新建的动画事件是
// 设置在动画开始后的 1.3秒
// 调用名为“PrintEvent”的函数
evt.intParameter = 12345;
evt.time = 1.3f;
evt.functionName = "PrintEvent";
// 获取动画剪辑并添加AnimationEvent
anim = GetComponent<Animator>();
clip = anim.runtimeAnimatorController.animationClips[0];
clip.AddEvent(evt);
}
// 作为事件调用的函数
public void PrintEvent(int i)
{
print("PrintEvent: " + i + " called at: " + Time.time);
}
}
备注:
1.这里添加的事件在 AnimationClip 与Animator 组件无关,如果有多个animationClip需要添加事件,则必须逐个添加
2. 作为事件调用的函数必须是和animation(animator)在同一个gameobject上
更多推荐
已为社区贡献1条内容
所有评论(0)