toLua 框架调用Esoteric Spine动画库笔记 - Unity

播放Spine动画

在骨骼父节点挂载上Skeleton Graphic脚本,如下图所示:
Skeleton Graphic
然后在lua代码中获取到获取到这个组件,并取得其中的AnimationState字段;
GetComponent
因为我拿到的Spine文件里面已经包含了动画,所以这里我有两种方法来播放Spine动画;
方法一是直接调取SetAnimation方法,并传入TrackIndex(后面会详细解释), 动画名,是否循环字段来播放对应动画,如下图所示:
SetAnimation
这里我设置的TrackIndex为0,动画名字是"stand“,并且设置的是不循环。

另一个播放的方法就是用AddAnimation, 它比第一个方法多了一个参数,delay,即延迟多久播放,如下图所示:
AddAnimation
严格来说,这个方法只是把一个动画加入到当前播放队列中,并不是直接播放这个动画。只有在当前队列为空时,才会直接播放这个动画。而且你的延迟参数的大小也会影响他们的播放顺序,因此这个延迟并不是一个叠加,而是先后(即,一个延迟3秒和一个延迟4秒的动画分别被添加到队列里时,第二个动画时间播放延迟是4秒后,而不是3 + 4 = 7 秒)

Track Index - 轨道序列

Track Index的概念就好比图层。UI中我们会将图层分为1,2,3层,并在不同的图层渲染不同的画面,最后这几个画面重叠后呈现出我们想要的最终效果。也好比音频中的音轨,轨道1播放人声,轨道2播放鼓点,轨道3播放主音吉他,最后3个通道混合出来就成了我们的大作。Spine 轨道也是一个意思,不同的轨道可以用来负责播放不同的动画,从而实现同时播放多个动画,并混合出我们想要的最终效果。

最经典的例子就好比一个人物模型有奔跑和射击两个动画,我们可以设置奔跑在0层,射击在1层播放,这样就能实现人物边跑边射击的动画混合。需要注意的是:高层级的通道会覆盖低层级的通道,数字越大意味着越优先。用刚刚的例子解释就是,更高层级的射击动画,覆盖了在0层的奔跑动画的手部动作,使得0层在继续播放其他部位的奔跑动画的同时,手部可以播放1层的射击动作。

所以如果我们没有需要将动画分层的时候,全部都传同样的层级就可以。分层的时候要记住,高级的会覆盖低级的动画。

回调设置

AnimationState里面还包含有OnStart, OnLoop, OnComplete,OnEnd等回调方法。具体怎么加入自己的回调呢,先看下图:
在这里插入图片描述
这里我选择了OnComplete回调,即会在动画播放完成之后才会调用,而被没有完成就被终止的动画,则不会调用OnComplete。

添加方法很简单,首先无论是SetAnimation还是AddAnimation都会返回一个TrackEntry的类。其中包含有个各类回调的字段,Start, End, Complete等等。我们只需要获取到这个字段并对其进行+= 或者-=操作即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kayn_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值