GameEnter.cs 2.5 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. SingletonManager.Clear();
  18. // 数据类init
  19. ModuleInit();
  20. }
  21. void OnDestroy()
  22. {
  23. SingletonManager.Clear();
  24. }
  25. /// <summary>
  26. /// 对象池init
  27. /// </summary>
  28. private void ObjectPoolInit()
  29. {
  30. EnemyPool.GetInstance().Init();
  31. BalloonPool.GetInstance().Init();
  32. }
  33. /// <summary>
  34. /// 数据类init
  35. /// </summary>
  36. void ModuleInit()
  37. {
  38. StartCoroutine(GameModule.GetInstance().LoadCSV("global.csv", () => { CoroutineSubNum(); }));
  39. StartCoroutine(MonsterModule.GetInstance().LoadCSV("monster.csv", () => { CoroutineSubNum(); }));
  40. StartCoroutine(WeaponModule.GetInstance().LoadCSV("weapon.csv", () => { CoroutineSubNum(); }));
  41. StartCoroutine(StagePropertyModule.GetInstance().LoadCSV("stageProperty.csv", () => { CoroutineSubNum(); }));
  42. StartCoroutine(WayPointModule.GetInstance().LoadCSV("wayPoint.csv", () => { CoroutineSubNum(); }));
  43. StartCoroutine(ProcessModule.GetInstance().LoadCSV("process.csv", () => { CoroutineSubNum(); }));
  44. StartCoroutine(StringModule.GetInstance().LoadCSV("strings.csv", () => { CoroutineSubNum(); }));
  45. }
  46. /// <summary>
  47. /// 协程全部运行完 执行其他类的update
  48. /// </summary>
  49. void Update()
  50. {
  51. if (coroutineNum == 0)
  52. {
  53. GameMananger.GetInstance().Update();
  54. ProcessManager.GetInstance().Update();
  55. }
  56. }
  57. /// <summary>
  58. /// 判断协程进度
  59. /// </summary>
  60. public void CoroutineSubNum()
  61. {
  62. coroutineNum--;
  63. if (coroutineNum == 0)
  64. {
  65. ObjectPoolInit();
  66. UIManager.GetInstance().Init(() =>
  67. {
  68. FlotagePool.GetInstance().Init();
  69. EnemyManager.GetInstance().Init();
  70. ProcessManager.GetInstance().Init();
  71. });
  72. GameMananger.GetInstance().Init();
  73. }
  74. }
  75. }
  76. }