GameEnter.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System;
  4. namespace WildAttack
  5. {
  6. /// <summary>
  7. /// 游戏入口
  8. /// </summary>
  9. public class GameEnter : MonoBehaviour
  10. {
  11. /// <summary>
  12. /// 协程数
  13. /// </summary>
  14. private int coroutineNum = 7;
  15. void Awake()
  16. {
  17. // 数据类init
  18. ModuleInit();
  19. }
  20. void OnDestroy()
  21. {
  22. SingletonManager.Clear();
  23. }
  24. /// <summary>
  25. /// 对象池init
  26. /// </summary>
  27. private void ObjectPoolInit()
  28. {
  29. EnemyPool.GetInstance().Init();
  30. BalloonPool.GetInstance().Init();
  31. }
  32. /// <summary>
  33. /// 数据类init
  34. /// </summary>
  35. void ModuleInit()
  36. {
  37. StartCoroutine(GameModule.GetInstance().LoadCSV("global.csv", () => { CoroutineSubNum(); }));
  38. StartCoroutine(MonsterModule.GetInstance().LoadCSV("monster.csv", () => { CoroutineSubNum(); }));
  39. StartCoroutine(WeaponModule.GetInstance().LoadCSV("weapon.csv", () => { CoroutineSubNum(); }));
  40. StartCoroutine(StagePropertyModule.GetInstance().LoadCSV("stageProperty.csv", () => { CoroutineSubNum(); }));
  41. StartCoroutine(WayPointModule.GetInstance().LoadCSV("wayPoint.csv", () => { CoroutineSubNum(); }));
  42. StartCoroutine(ProcessModule.GetInstance().LoadCSV("process.csv", () => { CoroutineSubNum(); }));
  43. StartCoroutine(StringModule.GetInstance().LoadCSV("strings.csv", () => { CoroutineSubNum(); }));
  44. }
  45. /// <summary>
  46. /// 协程全部运行完 执行其他类的update
  47. /// </summary>
  48. void Update()
  49. {
  50. if (coroutineNum == 0)
  51. {
  52. GameMananger.GetInstance().Update();
  53. ProcessManager.GetInstance().Update();
  54. }
  55. }
  56. /// <summary>
  57. /// 判断协程进度
  58. /// </summary>
  59. public void CoroutineSubNum()
  60. {
  61. coroutineNum--;
  62. if (coroutineNum == 0)
  63. {
  64. ObjectPoolInit();
  65. UIManager.GetInstance().Init(() =>
  66. {
  67. FlotagePool.GetInstance().Init();
  68. EnemyManager.GetInstance().Init();
  69. ProcessManager.GetInstance().Init();
  70. });
  71. GameMananger.GetInstance().Init();
  72. }
  73. }
  74. }
  75. }