ChronosAdd.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Chronos;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.AI;
  6. namespace AdonGameKit
  7. {
  8. public class ChronosAdd : MonoBehaviour
  9. {
  10. public string m_ParentName = "Enemy";
  11. //public float m_TimeScale = 1;
  12. List<LocalClock> localClocks = new List<LocalClock>();//全部局部时钟
  13. private void Awake()
  14. {
  15. int i;
  16. ///遍历全部动画组件
  17. ///添加局部时钟
  18. ///设置局部时钟父级
  19. ///添加时间线
  20. Animator[] anis = GetComponentsInChildren<Animator>();
  21. for (i = 0; i < anis.Length; i++)
  22. {
  23. Animator ani = anis[i];
  24. if (ani && ani.gameObject.GetComponent<Timeline>() == null)
  25. {
  26. LocalClock _localClock;
  27. if(!ani.gameObject.TryGetComponent<LocalClock>(out _localClock))
  28. {
  29. _localClock = ani.gameObject.AddComponent<LocalClock>();
  30. }
  31. _localClock.parent = Timekeeper.instance.Clock(m_ParentName);
  32. ani.gameObject.AddComponent<Timeline>().mode = TimelineMode.Local;
  33. _localClock.enabled = true;
  34. localClocks.Add(_localClock);
  35. }
  36. }
  37. ///寻路组件
  38. NavMeshAgent[] navs = GetComponentsInChildren<NavMeshAgent>();
  39. for (i = 0; i < navs.Length; i++)
  40. {
  41. NavMeshAgent nav = navs[i];
  42. if (nav.gameObject.GetComponent<Timeline>() == null)
  43. {
  44. LocalClock _localClock = nav.gameObject.AddComponent<LocalClock>();
  45. _localClock.parent = Timekeeper.instance.Clock(m_ParentName);
  46. nav.gameObject.AddComponent<Timeline>().mode = TimelineMode.Local;
  47. _localClock.enabled = true;
  48. localClocks.Add(_localClock);
  49. }
  50. }
  51. ///粒子组件
  52. //ParticleSystem[] particles = GetComponentsInChildren<ParticleSystem>();
  53. //for (i = 0; i < particles.Length; i++)
  54. //{
  55. // ParticleSystem particle = particles[i];
  56. // if (particle.gameObject.GetComponent<Timeline>() == null)
  57. // {
  58. // LocalClock _localClock = particle.gameObject.AddComponent<LocalClock>();
  59. // _localClock.parent = Timekeeper.instance.Clock(m_ParentName);
  60. // particle.gameObject.AddComponent<Timeline>().mode = TimelineMode.Local;
  61. // _localClock.enabled = true;
  62. // localClocks.Add(_localClock);
  63. // }
  64. //}
  65. }
  66. void Start()
  67. {
  68. //for (int i = 0; i < localClocks.Count; i++)
  69. //{
  70. // localClocks[i].gameObject.AddComponent<Timeline>().mode = TimelineMode.Local;
  71. // localClocks[i].enabled = true;
  72. //}
  73. }
  74. private void Update()
  75. {
  76. //SetTimeScale(m_TimeScale);
  77. }
  78. public void SetTimeScale(float timeScale)
  79. {
  80. for (int i = 0; i < localClocks.Count; i++)
  81. {
  82. LocalClock _localClock = localClocks[i];
  83. _localClock.localTimeScale = timeScale;
  84. }
  85. }
  86. }
  87. }