using System; using LitJson; using UnityEngine; public class PlayerWeaponEffectSync : BaseBehaviour { private void Awake() { this.animData = JsonMapper.ToObject(this.animMapping.text); } private void OnEnable() { this.animController.OnAnimChange += this.PlayEffect; } private void OnDisable() { if (this.animController) { this.animController.OnAnimChange -= this.PlayEffect; } } private void OnDestroy() { if (this.animController) { this.animController.OnAnimChange -= this.PlayEffect; } } private void Update() { this.m_skeletonAnimation.timeScale = this.animController.timeScale; } private void PlayEffect(object obj, MultiSpineAnimationController.EffectArgs e) { string effectName = e.effectName; if (this.animData.Contains(effectName)) { this.m_skeletonAnimation.state.SetAnimation(0, effectName, e.loop); } else { this.m_skeletonAnimation.state.SetAnimation(0, "Null", true); } this.m_skeletonAnimation.skeleton.SetToSetupPose(); } [SerializeField] private SkeletonAnimation m_skeletonAnimation; [SerializeField] private MultiSpineAnimationController animController; [SerializeField] private TextAsset animMapping; private JsonData animData; }