Unity 报错 之 'GOName' AnimationEvent 'FunctionName' has no receiver!

261 阅读2分钟

本文已参与掘金创作者训练营第三期「高产更文」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力。

Unity 报错 之 'GOName' AnimationEvent 'FunctionName' has no receiver! Are you missing a component?


报错原文:

报错原文

一般遇到这个问题我们的第一反应就是去查看方法名是否书写错误,或者代码中根本就不存在这个方法,

亦或是在Animation面板上的监听的引用丢失,诸如此类的问题查了一遍,还是没有找到问题。

Anim

这我有点不明白了,记得以前就是这么用的啊,现在为什么就不好用了呢,就很奇怪。然而我并没有放弃,我将Animation面板上的事件监听移除,再次运行则不会报错了。

可是这不是我解决问题的根本方法啊,我要的事件回调没有了啊,,,此时,我又使用代码形式做了这个事件的监听,部分代码如下:

 AnimationClip PokerClip = PokerAnimation.GetClip(AniName);
 AnimationEvent AniEvt = new AnimationEvent();
  
  //【这个函数需与Animation组件挂载在同一个游戏体上】
  AniEvt.functionName = "OnPlayEndCallBack";
  
  //设置执行时间
  AniEvt.time = PokerClip.length - 0.28f;
  
  //注册事件
  PokerClip.AddEvent(AniEvt);

到这里我的问题已经解决了,但是原因并不是通过代码添加好用,而在面板上的赋值不好用。原因是:用来监听做函数的脚本需与Animation组件挂载在同一个游戏体上,没错正是上面代码中注释的那句话,

由于Animation不经常用,竟然被这么个小问题,消耗了我近一个小时的时间,真是懊悔,以此记录;也希望通过这篇博文能给遇到类似的问题的你,带来一些思路或者提示。