描述

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

Logo

NVIDIA官方入驻,分享最新的官方资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐