//IEnumerator CloseAfterRun() //{ // for (int i = 0; i < heroSelectSlotList.Count; i++) // { // if (heroSelectSlotList[i].battleHero != null) // heroSelectSlotList[i].battleHero.skeletonAnimation.state.SetAnimation(0, heroSelectSlotList[i].battleHero.runAnimation, true); // } // yield return new WaitForSeconds(1.7f); //} /// <summary> 영웅 출전 </summary> IEnumerator StartExploration() { bool isNewBattle = Battle.currentBattleGroup.battleType != battleGroupID; //던전 아이디 //string dungeonID = Battle.currentBattleGroupID; //선택된 영웅을 해당 씬에 배치하면서 전투 시작 if (selectedHeroDataList == null || selectedHeroDataList.Count == 0) { Debug.Log("선택한 영웅이 없습니다."); yield break; } for (int i = 0; i < heroSelectSlotList.Count; i++) { if (heroSelectSlotList[i].battleHero != null) { heroSelectSlotList[i].battleHero.skeletonAnimation.state.SetAnimation(0, heroSelectSlotList[i].battleHero.spineAnimationRun /*runAnimation*/, true); } } //yield return new WaitForSeconds(2.2f); for (int i = 0; i < selectedHeroDataList.Count; i++) { HeroData d = HeroManager.heroDataDic[selectedHeroDataList[i].id]; d.battleGroupID = battleGroupID; //d.isUsing = true; } //리스트 새로 만들어서 배틀그룹 생성 List <HeroData> heroList = new List <HeroData>(selectedHeroDataList); if (isNewBattle) { UIFadeController.FadeOut(1f); while (!UIFadeController.isFinishFadeOut) { yield return(null); } } //Battle.CreateBattleGroup(battleGroupID, heroList); BattleGroup battleGroup = Battle.battleGroupList.Find(x => x.battleType == battleGroupID); //새로운 배틀그룹 생성 if (!battleGroup) { Battle.CreateBattleGroup(battleGroupID, heroList); battleGroup = Battle.battleGroupList.Find(x => x.battleType == battleGroupID); while (!battleGroup.isInitialized) { yield return(null); } } //기본 배틀그룹의 멤버 변경 else { //기존 멤버중 없던애는 배틀 그룹에 새로 추가 & 스폰 for (int i = 0; i < heroList.Count; i++) { //기존 멤버는 가만히 냅둠 if (battleGroup.originalMember.Find(x => x.heroData == heroList[i])) { continue; } BattleHero battleHero = null; yield return(StartCoroutine(actorPool.Instance.GetActor(heroList[i].heroID, x => battleHero = x))); if (!battleHero) { continue; } battleHero.team = BattleUnit.Team.Red; battleHero.Init(battleGroup, heroList[i]); battleHero.gameObject.SetActive(true); battleHero.ReGen(); battleGroup.redTeamList.Add(battleHero); battleGroup.originalMember.Add(battleHero); } //기존 멤버 중 제외된 애는 배틀그룹에서 제외 for (int i = battleGroup.originalMember.Count - 1; i >= 0; i--) { HeroData heroData = heroList.Find(x => x == battleGroup.originalMember[i].heroData); if (heroData != null) { continue; } BattleHero h = battleGroup.originalMember[i]; h.heroData.battleGroupID = string.Empty; h.Despawn(); //battleGroup.originalMember[i].SetBattleGroup(null); //battleGroup.originalMember[i].gameObject.SetActive(false); battleGroup.originalMember.Remove(h); battleGroup.redTeamList.Remove(h); //h.heroData.battleGroupID = string.Empty; //h.Despawn(); } //데이타 저장 Battle.SaveStageInfo(battleGroup); } //Battle.ShowBattle(battleGroupID); //이렇게 안 하면 가장 마지막에 봤던 전투그룹으로 돌아가서 출전 후 다른 전투그룹이 비쳐짐 Battle.lastBattleGroupID = battleGroupID; //전투 화면으로 돌아가고 창 닫기 SceneLobby.Instance.SceneChange(LobbyState.Battle); Close(); //한프레임 쉬어야 프리킹 현상 없음 yield return(null); //페이드 인 if (isNewBattle) { UIFadeController.FadeIn(1f); } }