GameEnter.cs 2.7 KB

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