Unity AnimationClip 动态创建和修改AnimationEvent

AnimationClip 动态添加 AnimationEvent

/* 添加事件 */
private void AddEvent()
{
    var animClip = Resources.Load<AnimationClip>("Test.fbx");
    if (animClip != null)
    {
        AnimationEvent evt = new AnimationEvent();
        evt.time = 0f;
        evt.functionName = "TriggerAnimationEvent";
        evt.floatParameter = 1f;
        animClip.AddEvent(evt);
    }
    return;
}

AnimationClip 动态修改 AnimationEvent 参数

/* 修改事件参数 */
private bool ResetEventFloatParameter(AnimationClip clip, string funcName, float parameter)
{
    bool isReset = false;
    List<AnimationEvent> events = new List<AnimationEvent>();
    foreach (var currentEvent in clip.events)
    {
        var newEvent = new AnimationEvent();
        Clone(currentEvent, newEvent);
        if (currentEvent.functionName == name)
        {
            newEvent.floatParameter = parameter;
            isReset = true;
        }

        events.Add(newEvent);
    }

    // 直接修改不生效,此处是清除重新添加
    clip.events = null; 
    foreach (var evt in events)
    {
        clip.AddEvent(evt);
    }

    return isReset;
}

private static void Clone(AnimationEvent l, AnimationEvent r)
{
    r.functionName = l.functionName;
    r.floatParameter = l.floatParameter;
    r.intParameter = l.intParameter;
    r.objectReferenceParameter = l.objectReferenceParameter;
    r.stringParameter = l.stringParameter;
    r.time = l.time;
}

如有错误,欢迎指出。

blog: http://blog.csdn.net/david_dai_1108

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值