// Use this for initialization void Awake() { mSp = GetComponent<ScenePrelude>(); if (mSp == null) return; GameMain.EvtFreezeBombActive += Handle_FreezeBombActive; GameMain.EvtFreezeBombDeactive += Handle_FreezeBombDeactive; }
// Use this for initialization void Awake() { mSp = GetComponent <ScenePrelude>(); if (mSp == null) { return; } GameMain.EvtFreezeBombActive += Handle_FreezeBombActive; GameMain.EvtFreezeBombDeactive += Handle_FreezeBombDeactive; }
IEnumerator _Coro_MainProcess() { if (EvtMainProcess_FirstEnterScene != null) { EvtMainProcess_FirstEnterScene(); } float tmpTime = 0F; while (true) { State_ = State.Normal; SoundMgr.PlayNewBgm(); FishGenerator.StartFishGenerate(); //yield return new WaitForSeconds(TimeNormalScene); tmpTime = Time.time; while (IsMainProcessPause || Time.time - tmpTime < TimeNormalScene) { yield return(0); } State_ = State.BeforeSweeping_WaitBulletClear; //*准备过场 if (EvtMainProcess_PrepareChangeScene != null) { EvtMainProcess_PrepareChangeScene(); } //停止玩家攻击 foreach (Player p in Players) { p.GunInst.Fireable = false; p.CanChangeScore = false; } //等待场景所有子弹消失 Player[] tmpPlayers = new Player[Players.Length]; for (int i = 0; i != Players.Length; ++i) { tmpPlayers[i] = Players[i]; } while (true) { float numPlayerHaventBullet = 0; for (int i = 0; i != tmpPlayers.Length; ++i) { if (tmpPlayers[i] != null && tmpPlayers[i].GunInst.NumBulletInWorld == 0) { tmpPlayers[i] = null; } if (tmpPlayers[i] == null) { ++numPlayerHaventBullet; } } if (numPlayerHaventBullet == tmpPlayers.Length) { break; } yield return(0); } State_ = State.Sweeping; //停止出鱼 FishGenerator.StopFishGenerate(); SoundMgr.StopBgm(); //开始播放过场,清鱼 SceneBGMgr.Sweep(); yield return(new WaitForSeconds(SceneBGMgr.UseTime + 0.3F)); State_ = State.Preluding; SoundMgr.PlayNewBgm(); if (EvtMainProcess_FinishChangeScene != null) { EvtMainProcess_FinishChangeScene(); } //恢复玩家攻击 foreach (Player p in Players) { p.GunInst.Fireable = true; p.CanChangeScore = true; } //开场鱼阵 ScenePrelude pl = ScenePreludeMgr.DoPrelude(); //string preludeName = pl.gameObject.name; //Debug.Log("sceneprelude start = " + preludeName+ " fish num = "+NumFishAlive); bool waitPrelude = true; pl.Evt_PreludeEnd += () => { waitPrelude = false; }; while (waitPrelude) { yield return(new WaitForSeconds(0.1F)); } //Debug.Log("sceneprelude end = " + preludeName + " fish num = " + NumFishAlive); //loop:下一次正常出鱼 if (EvtMainProcess_FinishPrelude != null) { EvtMainProcess_FinishPrelude(); } } }