【Unity】‘GameObject‘ AnimationEvent ‘PrintEvent‘ has no receiver! Are you missing a component?

描述

在使用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上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值