RandomInvoke.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. 
  2. // =================================
  3. // Namespaces.
  4. // =================================
  5. using UnityEngine;
  6. using UnityEngine.Events;
  7. // =================================
  8. // Define namespace.
  9. // =================================
  10. namespace MirzaBeig
  11. {
  12. namespace Demos
  13. {
  14. namespace TheLastParticle
  15. {
  16. // =================================
  17. // Classes.
  18. // =================================
  19. [ExecuteInEditMode]
  20. [System.Serializable]
  21. public class RandomInvoke : MonoBehaviour
  22. {
  23. // =================================
  24. // Nested classes and structures.
  25. // =================================
  26. // ...
  27. // =================================
  28. // Variables.
  29. // =================================
  30. // ...
  31. float timer;
  32. float nextInvokeTime;
  33. public Vector2 timeRange = new Vector2(2.0f, 5.0f);
  34. // =================================
  35. // Functions.
  36. // =================================
  37. // ...
  38. protected virtual void Start()
  39. {
  40. // Even though invoke just calls Invoke, DON'T call the local invoke here!
  41. // Since it will be overriden and made to do more...
  42. // NOTE: Invoke doesn't seem to work with inheritance. So I'll just do it manually.
  43. nextInvokeTime = Random.Range(timeRange.x, timeRange.y);
  44. }
  45. // ...
  46. protected virtual void Update()
  47. {
  48. timer += Time.deltaTime;
  49. if (timer >= nextInvokeTime)
  50. {
  51. doSomething();
  52. timer = 0.0f;
  53. nextInvokeTime = Random.Range(timeRange.x, timeRange.y);
  54. }
  55. }
  56. // ...
  57. protected virtual void doSomething()
  58. {
  59. }
  60. // =================================
  61. // End functions.
  62. // =================================
  63. }
  64. // =================================
  65. // End namespace.
  66. // =================================
  67. }
  68. }
  69. }
  70. // =================================
  71. // --END-- //
  72. // =================================