您可以針對特定軌道設置監聽器,而不是針對整個 AnimationState
設置監聽器。這樣可以確保只有特定軌道上的動畫完成時才會觸發回調函數。以下是修改後的代碼示例:
opponentAnimation = opponent.GetComponent<SkeletonAnimation>();
opponentAnimationState = opponentAnimation.AnimationState;
// 只針對第一個軌道設置監聽器
TrackEntry trackEntry0 = opponentAnimation.AnimationState.SetAnimation(0, "animationName0", true);
trackEntry0.Complete += OnSpineAnimationComplete;
// 其他軌道的動畫設置
opponentAnimation.AnimationState.SetAnimation(1, "animationName1", true);
opponentAnimation.AnimationState.SetAnimation(3, "animationName3", true);
public void OnSpineAnimationComplete(TrackEntry trackEntry)
{
// 這裡的代碼只會在第一個軌道上的動畫完成時執行
Debug.Log("第一個軌道上的動畫已完成: " + trackEntry.Animation.Name);
}
這樣,OnSpineAnimationComplete
函數只會在第一個軌道上的動畫完成時被觸發,而不會被其他軌道上的動畫完成所觸發。