using UnityEngine; using UnityEngine.UI; using System; namespace WildAttack { /// /// 游戏入口 /// public class GameEnter : MonoBehaviour { UserGameAnalyse1 userGameAnalyse1; /// /// 协程数 /// private int coroutineNum = 7; private bool bCanUpdate = false; //初始化游戏时候类型 [SerializeField] private GameTypeEnum initGameType = GameTypeEnum.SinglePlayer; void Awake() { if (initGameType == GameTypeEnum.LocalTwoPlayer) { //开始游戏设置成双点模式 InfraredDemo._ins?.SetSinglePoint(false, ScreenPointTypeEnum.FullScreen); } SingletonManager.Clear(); userGameAnalyse1 = UserGameAnalyse1.CreateWhenGameStartAndReturn(14); // 数据类init ModuleInit(); } void Start() { } void OnDestroy() { SingletonManager.Clear(); } /// /// 对象池init /// private void ObjectPoolInit() { EnemyPool.GetInstance().Init(); BalloonPool.GetInstance().Init(); } /// /// 数据类init /// void ModuleInit() { StartCoroutine(GameModule.GetInstance().LoadCSV("global.csv", () => { CoroutineSubNum(); })); StartCoroutine(MonsterModule.GetInstance().LoadCSV("monster.csv", () => { CoroutineSubNum(); })); StartCoroutine(WeaponModule.GetInstance().LoadCSV("weapon.csv", () => { CoroutineSubNum(); })); StartCoroutine(StagePropertyModule.GetInstance().LoadCSV("stageProperty.csv", () => { CoroutineSubNum(); })); StartCoroutine(WayPointModule.GetInstance().LoadCSV("wayPoint.csv", () => { CoroutineSubNum(); })); StartCoroutine(ProcessModule.GetInstance().LoadCSV("process.csv", () => { CoroutineSubNum(); })); StartCoroutine(StringModule.GetInstance().LoadCSV("strings.csv", () => { CoroutineSubNum(); })); } /// /// 协程全部运行完 执行其他类的update /// void Update() { if (coroutineNum == 0 && bCanUpdate) { GameMananger.GetInstance().Update(); ProcessManager.GetInstance().Update(); } } /// /// 判断协程进度 /// public void CoroutineSubNum() { coroutineNum--; if (coroutineNum == 0) { ObjectPoolInit(); //提前初始化GameType,其他不处理 GameMananger.GetInstance().InitGameType(initGameType); //初始化绑定位置函数 FindAnyObjectByType().onInit(); UIManager.GetInstance().Init(userGameAnalyse1,() => { FlotagePool.GetInstance().Init(); EnemyManager.GetInstance().Init(); ProcessManager.GetInstance().Init(); }); GameMananger.GetInstance().Init(userGameAnalyse1); bCanUpdate = true; } } } }