PlayerWeaponEffectSync.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using LitJson;
  3. using UnityEngine;
  4. public class PlayerWeaponEffectSync : BaseBehaviour
  5. {
  6. private void Awake()
  7. {
  8. this.animData = JsonMapper.ToObject(this.animMapping.text);
  9. }
  10. private void OnEnable()
  11. {
  12. this.animController.OnAnimChange += this.PlayEffect;
  13. }
  14. private void OnDisable()
  15. {
  16. if (this.animController)
  17. {
  18. this.animController.OnAnimChange -= this.PlayEffect;
  19. }
  20. }
  21. private void OnDestroy()
  22. {
  23. if (this.animController)
  24. {
  25. this.animController.OnAnimChange -= this.PlayEffect;
  26. }
  27. }
  28. private void Update()
  29. {
  30. this.m_skeletonAnimation.timeScale = this.animController.timeScale;
  31. }
  32. private void PlayEffect(object obj, MultiSpineAnimationController.EffectArgs e)
  33. {
  34. string effectName = e.effectName;
  35. if (this.animData.Contains(effectName))
  36. {
  37. this.m_skeletonAnimation.state.SetAnimation(0, effectName, e.loop);
  38. }
  39. else
  40. {
  41. this.m_skeletonAnimation.state.SetAnimation(0, "Null", true);
  42. }
  43. this.m_skeletonAnimation.skeleton.SetToSetupPose();
  44. }
  45. [SerializeField]
  46. private SkeletonAnimation m_skeletonAnimation;
  47. [SerializeField]
  48. private MultiSpineAnimationController animController;
  49. [SerializeField]
  50. private TextAsset animMapping;
  51. private JsonData animData;
  52. }