Harald 所以是因为在“attack”动画End或Complete时,SetEmptyAnimation()的这个EmptyAnimation本身也会带有End 和 Complete回调并且被瞬间执行,导致了无限循环,那么同理这里使用AddEmptyAnimation()是否也会无限循环,EmptyAnimation的名称是什么,我可以通过在开头进行非空判断来避免循环吗,例如
private void AttckAnimalComplete(TrackEntry trackEntry)
{
if(trackEntry.Animation.Name.Equals(""))
return
isAttk = false;
SetEmptyAnimation();
}
使用SkeletonMecanim时spine event相关问题
@fengmin You can use trackEntry.IsEmptyAnimation
.
http://esotericsoftware.com/spine-api-reference#TrackEntry-isEmptyAnimation
In general as Misaki pointed out already, it would be far more recommended to call AddEmptyAnimation()
directly after setting e.g. the attack animation.
Also, it would likely be better to call attackTrackEntry.Complete += AttckAnimalComplete
instead of registering it at animationState.Complete += AttckAnimalComplete
, as you then receive the callback with every completed animation and not only your attack animation.
Misaki 最后我想问一下我该在什么地方注销我的complete事件注册,下面的例子正确吗
Spine.TrackEntry trackEntry = attackAnimator.SetAnimation(0, "attack", false);
trackEntry.Complete+= AttckAnimalComplete;
animationState.AddEmptyAnimation(0, 0, 0);
void AttckAnimalComplete(TrackEntry trackEntry)
{
isAttck = false;
trackEntry.Complete -= AttckAnimalComplete;
}