EnemyEffectSync.cs 1.4 KB

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