using System.Collections.Generic; using UnityEngine; using vnxbqy.UI; using UnityEngine.AI; using System.Collections; public class PreFightMission : Singleton { private Vector3 m_FirstTrransferStartPos = new Vector3(183.84f, 62.44f, 25.56f); private Vector3 m_FirstTrransferEndPos = new Vector3(161.33f, 51.545f, 34.84f); private Vector3 m_SecondTransferStartPos = new Vector3(122.3f, 51.7f, 33.23f); private Vector3 m_SecondTransferEndPos = new Vector3(96.26f, 6.51f, 46.66f); ///////////////////////////////////////////////////////////// public bool IsHandleMissionState = false; private bool m_IsServerNewPlayerMissionFinished = true; private GA_NpcClientFunc m_FuncNpc; private GA_NpcClientFightBoss m_Boss; private SFXController m_MoveToEffect; private SFXController m_ObstacleEffect; private SimpleMapTrasfer m_SimpleTransfer; private NavMeshObstacle m_Obstacle; private UIEffect m_UIEffect; private int cacheMinAttack; private int cacheMaxAttack; public bool faBaoSkillShow = false; private SFXController m_FabaoEffect; public UIEffect m_HuaShouEffect; private bool m_StartScaleBoss = false; private bool m_StartCheckFabaoEffect1 = false; private bool m_StartCheckFabaoEffect2 = false; private float m_EffectAppearTime = 1.5f; private Vector3 m_FabaoAccspeed; public bool IsHeroCanCastSkill = true; private bool m_Is_Step_2_KillRockFinished = false; private HeadUpQuestSign m_QuestSign; public bool updateAI = false; private int npcDeadCount; public bool needCreate1002 = false; private NavMeshObstacle m_1_Obs; private NavMeshObstacle m_2_Obs; private NavMeshObstacle m_3_Obs; private NavMeshObstacle m_4_Obs; private int m_SpecialGuideId = -1; public int SpecialGuideId { get { return m_SpecialGuideId; } } private GameObject m_KC_Yun = null; private bool m_CamAnimOver = false; public class Mission { public uint id; public byte status; } private enum E_AfterAttackType { None, RefreshRock, } private E_AfterAttackType m_AfterAttackType; public Dictionary s_MissionDict = new Dictionary(); public Dictionary> missionNpcDict = new Dictionary>(); public List refreshNpcHandlerList = new List(); public Dictionary> s_MissionImpasseDict = new Dictionary>(); SkillContainer m_SkillContainer; SkillContainer skillContainer { get { return m_SkillContainer ?? (m_SkillContainer = GameObject.FindObjectOfType()); } } public void PreLoad() { var _actorShowConfig = ActorShowConfig.Get(9); GameObject _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect.Length > 0 ? _actorShowConfig.effect[0] : 0); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); UILoader.LoadBossShow(_actorShowConfig.cam); _actorShowConfig = ActorShowConfig.Get(12); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect.Length > 0 ? _actorShowConfig.effect[0] : 0); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); UILoader.LoadBossShow(_actorShowConfig.cam); } public void HandleNewPlayerMission(H0820_tagMissionDict h0820) { if (h0820.MissionID == 1) { if ((h0820.DictKey.Equals("xinshou"))) { if (h0820.DictValue == 1) { m_IsServerNewPlayerMissionFinished = false; } IsHandleMissionState = true; } } } public void HandleUpdatePackage(H0827_tagMissionDesc h0827) { if ((h0827.MissionID > 999 && h0827.MissionID < 1003) || h0827.MissionID == 1) { if (h0827.MissionID == 1001 && h0827.MissionState == 1) { if (s_MissionDict.ContainsKey(1002)) { s_MissionDict.Remove(1002); } } if (s_MissionDict.ContainsKey(h0827.MissionID)) { s_MissionDict[h0827.MissionID].status = h0827.MissionState; // 打完了石头人 if (h0827.MissionID == 1001 && h0827.MissionState == 2) { Step_2_KillRockFinished(); } else if (h0827.MissionID == 1002 && h0827.MissionState == 2) { Step_4_BossKilled(); } } else { Mission _mission = new Mission { id = h0827.MissionID, status = h0827.MissionState }; if (h0827.MissionState == 1) { if (StageLoad.Instance.IsServerPrepareOk(ServerType.Main)) { HandlerMission(h0827.MissionID); } } s_MissionDict.Add(h0827.MissionID, _mission); } if (h0827.MissionID == 1002 && h0827.MissionState == 2) { WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose; WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); var _win = WindowCenter.Instance.Get(); if (_win) { Transform _temp = _win.transform.Find("CopyOfThePanel/HighSettingTip/BoxContainer"); _temp.SetActive(false); _temp = _win.transform.Find("CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(false); } } } } public void Start() { mDestroy = false; NewGuideModel _model = ModelCenter.Instance.GetModel(); _model.arrowScale = 1; IsHeroCanCastSkill = false; var _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/TopRightTip"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/HighSettingShow"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/BoxContainer"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/InGameDownLoadProgress"); _temp.localScale = Vector3.zero; //_temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/SwitchPan_a"); //_temp.localScale = Vector3.zero; //_temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/Btn_SkillXp"); //_temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/ChatTip"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/LowSettingTip"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SwitchShowBtn"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/PatternBtn"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/VIPBtn"); _temp.GetComponent().enabled = false; _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/FunctionForecastTip"); _temp.localScale = Vector3.zero; ButtonEx _button = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/Head").GetComponent(); _button.enabled = false; skillContainer.skill1.icon.SetActive(false); skillContainer.skill1.locked.SetActive(true); skillContainer.skill1.transform.localScale = Vector3.zero; skillContainer.skill2.transform.localScale = Vector3.zero; skillContainer.skill3.transform.localScale = Vector3.zero; skillContainer.skill4.transform.localScale = Vector3.zero; skillContainer.blinkSkill.transform.localScale = Vector3.zero; skillContainer.switchButton.SetActive(false); m_Is_Step_2_KillRockFinished = false; skillContainer.transform.localScale = Vector3.zero; m_SpecialGuideId = 35; // 判断处于新手任务的哪一个阶段 if (s_MissionDict.ContainsKey(1000) && s_MissionDict[1000].status == 1) { GA_Hero.s_MapSwitching = true; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskSwithButton"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick"); _temp.localScale = Vector3.zero; DebugEx.Log("未开始第一个任务..."); // 根据任务设置主角坐标 PlayerDatas.Instance.hero.InitBornPos(378, 52); PlayerDatas.Instance.hero.Pos = new Vector3(188.984f, 62.47324f, 26.092f); CameraController.Instance.Apply(); CameraController.Instance.PlayAnimationClip("Map000_kaishir"); m_KC_Yun = Object.Instantiate(InstanceResourcesLoader.LoadEffect(1066)); m_KC_Yun.transform.position = PlayerDatas.Instance.hero.Pos; m_CamAnimOver = true; GA_Hero.s_MapSwitching = true; if (m_FuncNpc == null) { m_FuncNpc = CreateFuncNpc(10104001, new Vector3(187.93f, 62.5625f, 27.5f), new Vector3(0, 168, 0)); SelectionManager.Request(SelectionManager.E_Type.Green, m_FuncNpc); Vector3 _direction = MathUtility.ForwardXZ(m_FuncNpc.Pos, PlayerDatas.Instance.hero.Pos); PlayerDatas.Instance.hero.Forward = _direction; m_FuncNpc.Forward = -_direction; } } else if (s_MissionDict.ContainsKey(1001)) { if (s_MissionDict[1001].status == 1) { _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskSwithButton"); _temp.localScale = Vector3.zero; PlayerDatas.Instance.hero.InitBornPos(322, 70); Step_2_TransferFinished(); } else if (s_MissionDict[1001].status == 2) { PlayerDatas.Instance.hero.InitBornPos(300, 75); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip"); _temp.localScale = Vector3.one; skillContainer.transform.localScale = Vector3.one; // 创建一个格挡区域 m_Obstacle = SoMap.CreateImpasse.General(new Vector3(144.03f, 0, 34.77f), new Vector3(0, 84.09f, 0), new Vector3(8.5f, 1, 3)); // 格挡特效 m_ObstacleEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1040, new Vector3(145.79f, 51.9f, 34.711f), new Vector3(0, 84, 0)); m_ObstacleEffect.duration = 0; Step_2_KillRockFinished(); } } else if (s_MissionDict.ContainsKey(1002)) { if (s_MissionDict[1002].status == 1) { _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskSwithButton"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip"); _temp.localScale = Vector3.one; skillContainer.transform.localScale = Vector3.one; updateAI = false; // 创建一个开启对话框的区域 if (m_SimpleTransfer == null) { m_SimpleTransfer = CreateTransfer(); } Vector3 _pos = new Vector3(124.65f, 51.494f, 33.01f); m_SimpleTransfer.transform.position = _pos; m_SimpleTransfer.transform.localScale = new Vector3(20, 20, 20); m_SimpleTransfer.Init(-1, _pos, false, null, () => { Debug.Log("触发第三个对话内容..."); Step_3_TalkFinished(); SoundPlayer.Instance.PlayBackGroundMusic(47); BossShowModel.Instance.SetMisstionShow(1002, false); BossShowModel.Instance.OnNpcAppear(1007); BossShowModel.Instance.bossShowCompletedEvent += OnAfterBossShow; GA_Hero.s_MapSwitching = true; if (PlayerDatas.Instance.hero.State == E_ActorState.AutoRun) { PlayerDatas.Instance.hero.StopPathFind(); } PlayerDatas.Instance.hero.IdleImmediate(); HeroBehaviour.onCastSkill += OnCastSkill; }); PlayerDatas.Instance.hero.InitBornPos(270, 66); } else { _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(true); Step_4_BossKilled(); m_FuncNpc = CreateFuncNpc(1006, new Vector3(126, 0, 34), Vector3.zero); SelectionManager.Request(SelectionManager.E_Type.Green, m_FuncNpc); PlayerDatas.Instance.hero.InitBornPos(256, 68); Vector3 _dir = MathUtility.ForwardXZ(m_FuncNpc.Pos, PlayerDatas.Instance.hero.Pos); PlayerDatas.Instance.hero.Forward = _dir; m_FuncNpc.Forward = -_dir; } } } private void Step_2_KillRockFinished() { if (m_Is_Step_2_KillRockFinished) { return; } WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); needCreate1002 = true; m_Is_Step_2_KillRockFinished = true; if (m_FuncNpc == null) { m_FuncNpc = CreateFuncNpc(10104002, new Vector3(147.044f, 51.51167f, 38.064f), new Vector3(0, 121, 0)); m_QuestSign = HeadUpQuestSign.RequireHeadUpQuestSign(HeadUpQuestSign.Pattern.Exclamation, m_FuncNpc.MP_Name, 0, CameraController.Instance.CameraObject); m_QuestSign.SetActive(true); } if (m_SimpleTransfer == null) { m_SimpleTransfer = CreateTransfer(); } Vector3 _pos = new Vector3(147.106f, 51.494f, 38.01f); m_SimpleTransfer.transform.position = _pos; m_SimpleTransfer.transform.localScale = Vector3.one * 3f; m_SimpleTransfer.Init(-1, _pos, false, null, () => { GuideDialogueModel _model1 = ModelCenter.Instance.GetModel(); _model1.dialogID = 1001; _model1.onClose = Step_2_TalkFinished; WindowCenter.Instance.Open(); if (m_MoveToEffect) { SFXPlayUtility.Instance.Release(m_MoveToEffect); m_MoveToEffect = null; } if (PlayerDatas.Instance.hero.State == E_ActorState.AutoRun) { PlayerDatas.Instance.hero.StopPathFind(); } WindowCenter.Instance.Close(); }); NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = false; _model2.content = Language.Get("Operate1"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1001"; _model2.size = new Vector2(276, 72); _model2.direction = 3; _model2.clickClosed = true; _model2.pressedClose = false; _model2.onClose = null; WindowCenter.Instance.Open(); // 创建箭头特效 m_MoveToEffect = SFXPlayUtility.Instance.Play(1052, PlayerDatas.Instance.hero.Root); FaceTargetXZ _f = m_MoveToEffect.gameObject.AddComponent(); _f.target = m_FuncNpc.Root; SnxxzGame.Instance.StartCoroutine(WaitForGoToNpc(_pos)); } private IEnumerator WaitForGoToNpc(Vector3 pos) { GA_Hero _hero = PlayerDatas.Instance.hero; while (true) { if (mDestroy) { yield break; } if (_hero.IsIdle()) { break; } yield return null; } if (!mDestroy) { PlayerDatas.Instance.hero.MoveToPosition(pos); } } private void HandlerMission(uint missionId) { if (missionNpcDict.ContainsKey(missionId) == false) { missionNpcDict.Add(missionId, new List()); } if (missionId == 1001) { return; } if (s_MissionDict.ContainsKey(missionId)) { return; } SoMap _soMap = ScriptableObjectLoader.LoadSoMapObjectGenerate(PlayerDatas.Instance.baseData.MapID); if (_soMap) { SoMap.MissionTrigger _missionTrigger = _soMap.missionTriggerList.Find((SoMap.MissionTrigger _m) => _m.id == missionId); if (_missionTrigger != null) { for (int i = 0; i < _missionTrigger.refreshNPCList.Count; ++i) { RefreshNpcHandler _refreshNpcHandler = new RefreshNpcHandler(SoMap.E_TriggerType.Mission, missionId); _refreshNpcHandler.Init(_missionTrigger.refreshNPCList[i]); refreshNpcHandlerList.Add(_refreshNpcHandler); } for (int i = 0; i < _missionTrigger.createImpasseList.Count; ++i) { NavMeshObstacle _obstacle = SoMap.CreateImpasse.General(_missionTrigger.createImpasseList[i].position, _missionTrigger.createImpasseList[i].eulerAngles, _missionTrigger.createImpasseList[i].localScale); #if UNITY_EDITOR _obstacle.name = "Impasse:" + _missionTrigger.createImpasseList[i].id; #endif if (s_MissionImpasseDict.ContainsKey(missionId) == false) { s_MissionImpasseDict.Add(missionId, new List()); } s_MissionImpasseDict[missionId].Add(_obstacle); } } } } public void GeneralRefreshNpc(SoMap.E_TriggerType type, int id, SoMap.RefreshNPC data) { RefreshNpcHandler _refreshNpcHandler = new RefreshNpcHandler(type, (uint)id); _refreshNpcHandler.Init(data); refreshNpcHandlerList.Add(_refreshNpcHandler); } public void GeneralCreateImpasse(SoMap.E_TriggerType type, int id, SoMap.CreateImpasse data) { NavMeshObstacle _obstacle = SoMap.CreateImpasse.General(data.position, data.eulerAngles, data.localScale); #if UNITY_EDITOR _obstacle.name = "Impasse:" + data.id; #endif if (s_MissionImpasseDict.ContainsKey((uint)data.id) == false) { s_MissionImpasseDict.Add((uint)data.id, new List()); } s_MissionImpasseDict[(uint)data.id].Add(_obstacle); } public bool IsFinished() { return m_IsServerNewPlayerMissionFinished; } private SFXController m_PlayerFaBaoEffect; private bool m_CheckFaBaoWinOpen = false; public void Update() { for (int i = 0; i < refreshNpcHandlerList.Count; ++i) { refreshNpcHandlerList[i].Update(); } if (m_CamAnimOver) { if (!CameraController.Instance.IsPlayingAnim) { GuideDialogueModel _model = ModelCenter.Instance.GetModel(); _model.dialogID = 1000; _model.onClose = Step_1_TalkFinished; WindowCenter.Instance.Open(); m_CamAnimOver = false; Object.Destroy(m_KC_Yun); m_KC_Yun = null; } } if (m_StartScaleBoss) { if (m_Boss != null) { if (m_Boss.IsIdle()) { float _scale = m_Boss.Root.localScale.x; _scale -= Time.deltaTime; if (_scale <= 1) { _scale = 1; CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount(); _a225.CountID = 1007; GameNetSystem.Instance.SendInfo(_a225); //Step_4_BossKilled(); m_StartScaleBoss = false; var dataMapId = MapUtility.GetDataMapId(PlayerDatas.Instance.baseData.MapID); var mapResConfig = MapResourcesConfig.GetConfig(dataMapId, PlayerDatas.Instance.baseData.dungeonLineId); SoundPlayer.Instance.PlayBackGroundMusic(mapResConfig.Music); } m_Boss.Root.localScale = new Vector3(_scale, _scale, _scale); } } } if (m_StartCheckFabaoEffect1) { m_EffectAppearTime -= Time.deltaTime; if (m_EffectAppearTime <= 0) { m_StartCheckFabaoEffect1 = false; m_PlayerFaBaoEffect = SFXPlayUtility.Instance.PlayBattleEffect(1043, PlayerDatas.Instance.hero); // 打开法宝界面 TreasureModel treasureModel = ModelCenter.Instance.GetModel(); treasureModel.newGotTreasureId = 101; WindowCenter.Instance.Open(); FunctionUnlockFlyObject.functionUnLockShowEndEvent += FabaoEnd; SFXPlayUtility.Instance.Release(m_FabaoEffect); m_FabaoEffect = null; } } if (m_CheckFaBaoWinOpen) { if (WindowCenter.Instance.IsOpen()) { Transform _temp = WindowCenter.Instance.uiRoot.normalCanvas.Find("TreasureSelectWin/Container_Treasures"); _temp.localScale = Vector3.zero; _temp = WindowCenter.Instance.uiRoot.normalCanvas.Find("TreasureSelectWin/Btn_Back"); _temp.localScale = Vector3.zero; m_CheckFaBaoWinOpen = false; } } if (GA_Hero.s_MapSwitching) { if (PlayerDatas.Instance.hero != null && PlayerDatas.Instance.hero.IsRun()) { PlayerDatas.Instance.hero.IdleImmediate(); } } } private IEnumerator WaitForBack() { yield return WaitingForSecondConst.WaitMS1000; GA_Hero.s_MapSwitching = false; Transform _temp = WindowCenter.Instance.uiRoot.normalCanvas.Find("TreasureSelectWin/Btn_Back"); _temp.localScale = Vector3.one; NewGuideModel _model = ModelCenter.Instance.GetModel(); _model.showMask = false; _model.content = ""; _model.componentPath = "NormalCanvas/TreasureSelectWin/Btn_Back"; _model.size = new Vector2(92, 81); _model.direction = 2; _model.arrowScale = 2; _model.pressedClose = false; _model.clickClosed = false; _model.onClose = null; WindowCenter.Instance.Open(); PlayerDatas.Instance.hero.LockTarget = null; PlayerDatas.Instance.hero.SelectTarget = null; PlayerDatas.Instance.hero.Behaviour.StopKillUntilDieAI(); UI3DTreasureSelectStage.Instance.showCamera.GetComponent().enabled = true; WindowCenter.Instance.windowAfterCloseEvent += OnWindowClose; } private void OnWindowClose(Window win) { if (win is TreasureSelectWin) { GuideDialogueModel _dmodel = ModelCenter.Instance.GetModel(); _dmodel.dialogID = 1006; _dmodel.onClose = Step_4_TalkFinished; WindowCenter.Instance.Open(); Transform _temp = null; _temp = WindowCenter.Instance.Get().transform.Find("CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(false); WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose; WindowCenter.Instance.Close(); } } private void OnWindowOpen(Window win) { if (win is TreasureSelectWin) { WindowCenter.Instance.Close(); WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen; if (m_Boss != null) { m_FuncNpc = CreateFuncNpc(1006, m_Boss.Pos, m_Boss.Root.eulerAngles); m_FuncNpc.Root.localScale = m_Boss.Root.localScale; m_FuncNpc.Pos = m_Boss.Pos; m_FuncNpc.ActorInfo.PlayerName = m_Boss.NpcConfig.charName; m_FuncNpc.RequestName(); SelectionManager.Request(SelectionManager.E_Type.Green, m_FuncNpc); GAMgr.Instance.ServerDie(m_Boss.ServerInstID); GAMgr.Instance.Release(m_Boss); m_Boss = null; } } } private void FabaoEnd(FunctionUnlockType type) { if (type == FunctionUnlockType.Treasure) { skillContainer.skill1.transform.localScale = Vector3.one; FunctionUnlockFlyObject.functionUnLockShowEndEvent -= FabaoEnd; cacheMinAttack = PlayerDatas.Instance.extersion.MINATK; cacheMaxAttack = PlayerDatas.Instance.extersion.MAXATK; FuncConfigConfig _funcConfig = FuncConfigConfig.Get("PreFight_Fabao"); int _atk = int.Parse(_funcConfig.Numerical1); PlayerDatas.Instance.extersion.MINATK = _atk; PlayerDatas.Instance.extersion.MAXATK = _atk; NewGuideModel _model = ModelCenter.Instance.GetModel(); _model.size = new Vector2(79, 79); _model.content = Language.Get("Operate2"); _model.componentPath = "BaseCanvas/MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/Skill_Panel/Skill_Group1/Btn_Skill1/Img_Icon"; _model.clickClosed = true; _model.pressedClose = false; _model.showMask = false; _model.onClose = () => { GA_Hero.s_MapSwitching = false; CameraController.Instance.MaskCamera.enabled = false; CameraController.Instance.MaskCamera.SetActive(false); CameraController.Instance.Mask.SetActive(false); if (m_HuaShouEffect) { Object.Destroy(m_HuaShouEffect.gameObject); m_HuaShouEffect = null; } PlayerDatas.Instance.hero.RequestShadow(); PlayerDatas.Instance.hero.CastSkill(PlayerDatas.Instance.skill.GetQuickSkillByPos(0).id); }; WindowCenter.Instance.Open(); IsHeroCanCastSkill = true; m_HuaShouEffect = EffectMgr.Instance.PlayUIEffect(1050, 4500, skillContainer.skill1.icon.transform, true); PlayerDatas.Instance.hero.OnSkillCompelete += OnSkillCompelete; } } private void OnSkillCompelete(int skillID) { PlayerDatas.Instance.hero.OnSkillCompelete -= OnSkillCompelete; List _allActor = GAMgr.Instance.GetAll(); for (int i = 0; i < _allActor.Count; ++i) { GActorNpcFight _npcFight = _allActor[i] as GActorNpcFight; if (_npcFight != null && _npcFight.NpcConfig.NPCID == 1006) { GAMgr.Instance.ServerDie(_npcFight.ServerInstID); _npcFight.ActorInfo.ResetHp(0, 0); _npcFight.ActorInfo.serverDie = true; _npcFight.Die(PlayerDatas.Instance.hero.ServerInstID, 0); if (_npcFight.State == E_ActorState.AutoRun) { _npcFight.State = E_ActorState.Idle; } } } } /// /// 第一次对话结束 /// 创建云朵, 发送任务 /// private void Step_1_TalkFinished() { GA_Hero.s_MapSwitching = false; CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount(); _a225.CountID = 1; GameNetSystem.Instance.SendInfo(_a225); m_SimpleTransfer = CreateTransfer(); // 光标指示 m_MoveToEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1041, new Vector3(183.921f, 62.44f, 25.684f), new Vector3(90, 0, 0)); m_MoveToEffect.duration = -1; Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick"); _temp.localScale = Vector3.one; // 打开小提示窗口 NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = false; _model2.content = Language.Get("Operate3"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/JoyStick/JoystickBase"; _model2.size = new Vector2(144, 144); _model2.direction = 0; _model2.pressedClose = false; _model2.clickClosed = true; _model2.onClose = null; WindowCenter.Instance.Open(); m_SimpleTransfer.Init(1044, m_FirstTrransferEndPos, true, () => { if (m_MoveToEffect) { SFXPlayUtility.Instance.Release(m_MoveToEffect); m_MoveToEffect = null; } if (m_UIEffect) { EffectMgr.Instance.RecyleUIEffect(m_UIEffect.effect, m_UIEffect.gameObject); m_UIEffect = null; } if (m_HuaShouEffect) { m_HuaShouEffect.transform.position = Constants.Special_Hide_Position; EffectMgr.Instance.RecyleUIEffect(1049, m_HuaShouEffect.gameObject); m_HuaShouEffect = null; } WindowCenter.Instance.Close(); }, Step_2_TransferFinished); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick/JoystickBase"); m_HuaShouEffect = EffectMgr.Instance.PlayUIEffect(1049, 4500, _temp, true); m_UIEffect = EffectMgr.Instance.PlayUIEffect(1095, 4500, _temp, true); DebugEx.Log("第一个任务已经结束..."); } /// /// 从高台到战斗区移动结束 /// private void Step_2_TransferFinished() { // 移除高台处的NPC if (m_FuncNpc != null) { GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID); GAMgr.Instance.Release(m_FuncNpc); m_FuncNpc = null; GameObjectPoolManager.Instance.UnLoadNPC(10104001); } // 创建一个格挡区域 m_Obstacle = SoMap.CreateImpasse.General(new Vector3(144.03f, 0, 34.77f), new Vector3(0, 84.09f, 0), new Vector3(8.5f, 1, 3)); // 格挡特效 m_ObstacleEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1040, new Vector3(145.79f, 51.9f, 34.711f), new Vector3(0, 84, 0)); m_ObstacleEffect.duration = 0; if (m_SimpleTransfer == null) { m_SimpleTransfer = CreateTransfer(); } Vector3 _pos = new Vector3(151.55f, 51.46f, 36.21f); m_SimpleTransfer.transform.position = _pos; m_SimpleTransfer.transform.localScale = new Vector3(14, 10, 14); m_SimpleTransfer.Init(-1, _pos, false, null, () => { skillContainer.transform.localScale = Vector3.one; // 普攻引导 if (WindowCenter.Instance.IsOpen() == true) { WindowCenter.Instance.Close(); } if (m_UIEffect) { EffectMgr.Instance.RecyleUIEffect(m_UIEffect.effect, m_UIEffect.gameObject); m_UIEffect = null; } // 播放普攻按钮出现特效 Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/AttackBtn"); m_UIEffect = EffectMgr.Instance.PlayUIEffect(1096, 4500, _temp, true); NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = false; _model2.content = Language.Get("Operate4"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/AttackBtn"; _model2.size = new Vector2(178, 178); _model2.direction = 0; _model2.pressedClose = false; _model2.clickClosed = false; m_AfterAttackType = E_AfterAttackType.RefreshRock; HeroBehaviour.onCastSkill += OnCastSkill; _model2.onClose = null; WindowCenter.Instance.Open(); }); SnxxzGame.Instance.StartCoroutine(LookNpcBorn()); DebugEx.Log("移动到第二个平台已经结束..."); } private IEnumerator LookNpcBorn() { GA_Hero.s_MapSwitching = true; // 摄像机移动至石头人出现区域 CameraController.Instance.SetLookTarget(null); CameraController.Instance.transform.position = PlayerDatas.Instance.hero.Pos; yield return WaitingForSecondConst.WaitMS500; Vector3 _destPos = new Vector3(152.8f, 51.511f, 35.95f); float _distSqrt = MathUtility.DistanceSqrtXZ(CameraController.Instance.transform.position, _destPos); while (_distSqrt > 0.01f) { CameraController.Instance.transform.position = Vector3.Lerp(CameraController.Instance.transform.position, _destPos, Time.deltaTime * 4); _distSqrt = MathUtility.DistanceSqrtXZ(CameraController.Instance.transform.position, _destPos); yield return null; } // 石头人出现 RefreshRockNPC(); // 等待 yield return WaitingForSecondConst.WaitMS2000; yield return WaitingForSecondConst.WaitMS700; // 回到玩家身上 CameraController.Instance.SetLookTarget(PlayerDatas.Instance.hero.Root); // 显示任务界面 Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(true); WindowCenter.Instance.Get().ForceShowTaskPanel(); yield return WaitingForSecondConst.WaitMS500; string _path = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1000"; if(!WindowCenter.Instance.uiRoot.transform.Find(_path)) { _path = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1001"; } // 打开引导界面 NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = true; _model2.content = Language.Get("Operate5"); _model2.componentPath = _path; _model2.size = new Vector2(276, 72); _model2.direction = 3; _model2.clickClosed = true; _model2.pressedClose = false; _model2.onClose = () => { GA_Hero.s_MapSwitching = false; _temp = WindowCenter.Instance.uiRoot.transform.Find(_path); var _btn = _temp.GetComponent(); if (_btn) { _btn.onClick.Invoke(); } }; WindowCenter.Instance.Open(); yield return WaitingForSecondConst.WaitMS500; } private void RefreshRockNPC() { var _data = BuiltInLoader.LoadScriptableObject("EarlyStageFirstWaveRock"); if (!_data) { return; } if (_data.data == null || _data.data.Length == 0) { return; } GA_NpcClientFightNorm _rock = null; for (int i = 0; i < _data.data.Length; ++i) { _rock = CreateClntNorm((uint)_data.data[i].npcID, _data.data[i].position, _data.data[i].eularAngle); _rock.Play(GAStaticDefine.State_Open); if (!missionNpcDict.ContainsKey(1001)) { missionNpcDict.Add(1001, new List()); } missionNpcDict[1001].Add((int)_rock.ServerInstID); SFXPlayUtility.Instance.PlayBattleEffect(1099, _rock.Pos, Vector3.forward); } SoundPlayer.Instance.PlayUIAudio(251); Resources.UnloadAsset(_data); } private void Refresh_1001() { SoMap _soMap = ScriptableObjectLoader.LoadSoMapObjectGenerate(PlayerDatas.Instance.baseData.MapID); if (_soMap) { SoMap.MissionTrigger _missionTrigger = _soMap.missionTriggerList.Find((SoMap.MissionTrigger _m) => _m.id == 1001); if (_missionTrigger != null) { for (int i = 0; i < _missionTrigger.refreshNPCList.Count; ++i) { RefreshNpcHandler _refreshNpcHandler = new RefreshNpcHandler(SoMap.E_TriggerType.Mission, 1001); _refreshNpcHandler.Init(_missionTrigger.refreshNPCList[i]); refreshNpcHandlerList.Add(_refreshNpcHandler); } } } } // 与道尘师叔对话完毕 private void Step_2_TalkFinished() { if (m_QuestSign) { HeadUpQuestSign.Recycle(m_QuestSign); m_QuestSign = null; } npcDeadCount = 0; updateAI = false; if (m_Obstacle) { Object.Destroy(m_Obstacle.gameObject); } if (m_ObstacleEffect) { SFXPlayUtility.Instance.Release(m_ObstacleEffect); m_ObstacleEffect.transform.localScale = Vector3.one; m_ObstacleEffect = null; } // 播放2个指引方向的箭头 m_MoveToEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1051, new Vector3(147.3f, 51.6f, 34.68f), new Vector3(0, -94.42f, 0)); m_ObstacleEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1051, new Vector3(136.17f, 51.6f, 33.72f), new Vector3(0, -94.42f, 0)); // 创建一个开启对话框的区域 if (m_SimpleTransfer == null) { m_SimpleTransfer = CreateTransfer(); } NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = false; _model2.content = Language.Get("Operate6"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/AttackBtn"; _model2.size = new Vector2(178, 178); _model2.direction = 0; _model2.pressedClose = false; _model2.clickClosed = false; _model2.onClose = null; WindowCenter.Instance.Open(); SnxxzGame.Instance.StartCoroutine(DelayCloseNewGuideWin(3f)); Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(false); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskSwithButton"); _temp.localScale = Vector3.zero; Vector3 _pos = new Vector3(143.98f, 51.494f, 34.54f); m_SimpleTransfer.transform.position = _pos; m_SimpleTransfer.transform.localScale = new Vector3(5, 3, 5); m_SimpleTransfer.Init(-1, _pos, false, null, () => { HeroBehaviour.onCastSkill += OnCastSkill; _pos = new Vector3(124.65f, 51.494f, 33.01f); m_SimpleTransfer.transform.position = _pos; m_SimpleTransfer.transform.localScale = new Vector3(20, 20, 20); m_SimpleTransfer.Init(-1, _pos, false, null, () => { DebugEx.Log("触发第三个对话内容..."); Step_3_TalkFinished(); SoundPlayer.Instance.PlayBackGroundMusic(47); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick"); _temp.localScale = Vector3.zero; BossShowModel.Instance.SetMisstionShow(1002, false); BossShowModel.Instance.OnNpcAppear(1007); BossShowModel.Instance.bossShowCompletedEvent += OnAfterBossShow; List _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightNorm); for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } GameObjectPoolManager.Instance.UnLoadNPC(1002); if (PlayerDatas.Instance.hero.State == E_ActorState.AutoRun) { PlayerDatas.Instance.hero.StopPathFind(); } PlayerDatas.Instance.hero.IdleImmediate(); GA_Hero.s_MapSwitching = true; HeroBehaviour.onCastSkill += OnCastSkill; }); }); CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount(); _a225.CountID = 2; GameNetSystem.Instance.SendInfo(_a225); GameObjectPoolManager.Instance.UnLoadNPC(1000); } private IEnumerator DelayCloseNewGuideWin(float time) { float _time = Time.realtimeSinceStartup; while (Time.realtimeSinceStartup - _time < time) { yield return null; } WindowCenter.Instance.Close(); } private void OnCastSkill(int skillID) { HeroBehaviour.onCastSkill -= OnCastSkill; if (m_AfterAttackType == E_AfterAttackType.RefreshRock) { // 打开小提示窗口 GuideMessageModel _model = ModelCenter.Instance.GetModel(); _model.content = Language.Get("Operate7"); _model.duration = -1; WindowCenter.Instance.Open(); if (m_UIEffect) { EffectMgr.Instance.RecyleUIEffect(m_UIEffect.effect, m_UIEffect.gameObject); m_UIEffect = null; } Refresh_1001(); // 显示头像区域 Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip"); _temp.localScale = Vector3.one; updateAI = true; m_AfterAttackType = E_AfterAttackType.None; return; } if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } } public void Step_Boss_SkillShow() { BossShowModel.Instance.SetMisstionShow(1002, false); BossShowModel.Instance.OnNpcAppear(1008); BossShowModel.Instance.bossShowCompletedEvent += OnAfterBossSkillShow; PlayerDatas.Instance.hero.Behaviour.StopKillUntilDieAI(); } public UnityEngine.Events.UnityAction OnFinishedBossSkillShow; private void OnAfterBossSkillShow() { BossShowModel.Instance.bossShowCompletedEvent -= OnAfterBossSkillShow; if (OnFinishedBossSkillShow != null) { OnFinishedBossSkillShow(); } } private void OnAfterBossShow() { if (m_FuncNpc != null) { GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID); GAMgr.Instance.Release(m_FuncNpc); m_FuncNpc = null; } m_Boss = CreateClntBoss(1007, new Vector3(130f, 51.536263f, 33.4f), new Vector3(0, 84, 0)); updateAI = true; Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick"); _temp.localScale = Vector3.one; NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = false; _model2.content = Language.Get("Operate8"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/AttackBtn"; _model2.size = new Vector2(178, 178); _model2.direction = 0; _model2.clickClosed = true; _model2.pressedClose = true; _model2.onClose = null; WindowCenter.Instance.Open(); BossShowModel.Instance.bossShowCompletedEvent -= OnAfterBossShow; GA_Hero.s_MapSwitching = false; } private void Step_3_TalkFinished() { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null) { if (_hero.State == E_ActorState.AutoRun) { _hero.StopPathFind(); _hero.IdleImmediate(); } } if (m_MoveToEffect) { SFXPlayUtility.Instance.Release(m_MoveToEffect); m_MoveToEffect = null; } if (m_ObstacleEffect) { SFXPlayUtility.Instance.Release(m_ObstacleEffect); m_ObstacleEffect.transform.localScale = Vector3.one; m_ObstacleEffect = null; } if (m_Obstacle) { Object.Destroy(m_Obstacle.gameObject); } // 创建障碍 m_Obstacle = SoMap.CreateImpasse.General(new Vector3(136.8f, 0, 34.12f), new Vector3(0, 84.09f, 0), new Vector3(10f, 1, 3)); // 创建特效 m_ObstacleEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1040, new Vector3(135.56f, 51.9f, 33.68f), new Vector3(0, 84, 0f)); m_ObstacleEffect.duration = 0; GA_Hero.s_MapSwitching = false; DebugEx.Log("第三个对话结束..."); } public void Step_FabaoEffect() { m_FabaoEffect = SFXPlayUtility.Instance.PlayBattleEffect(1042, CameraController.Instance.transform); m_FabaoEffect.gameObject.SetLayer(LayerUtility.Hero, true); m_StartCheckFabaoEffect1 = true; m_EffectAppearTime = 7.2f; } public void Step_StartScale() { m_StartScaleBoss = true; if (m_PlayerFaBaoEffect) { Animator _animator = m_PlayerFaBaoEffect.transform.GetChild(0).GetComponent(); _animator.Play("Yindao3_02"); m_PlayerFaBaoEffect.startTime = 0; m_PlayerFaBaoEffect.duration = 1; m_PlayerFaBaoEffect = null; } } public void Step_4_BossKilled() { m_SpecialGuideId = -1; GA_Hero.s_MapSwitching = true; GuideDialogueModel _model = ModelCenter.Instance.GetModel(); _model.dialogID = 1003; _model.onClose = () => { ModelCenter.Instance.GetModel().SetUnlockAnim(TreasureCategory.Human, 101); }; WindowCenter.Instance.Open(); PlayerDatas.Instance.hero.StopRush(); if (PlayerDatas.Instance.hero.State == E_ActorState.AutoRun) { PlayerDatas.Instance.hero.StopPathFind(); } PlayerDatas.Instance.hero.Behaviour.StopKillUntilDieAI(); PlayerDatas.Instance.hero.IdleImmediate(); updateAI = false; if (cacheMinAttack != 0) { PlayerDatas.Instance.extersion.MINATK = cacheMinAttack; } if (cacheMaxAttack != 0) { PlayerDatas.Instance.extersion.MAXATK = cacheMaxAttack; } } private void FabaoFlyFinished(int obj) { WindowCenter.Instance.Close(); Transform _temp = null; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(true); NewGuideModel _model2 = ModelCenter.Instance.GetModel(); _model2.showMask = true; _model2.content = Language.Get("Operate9"); _model2.componentPath = "BaseCanvas/MainInterfaceWin/CopyOfThePanel/HighSettingTip/Container_Treasure"; _model2.size = new Vector2(148, 148); _model2.direction = 1; _model2.pressedClose = true; _model2.clickClosed = true; _model2.onClose = null; WindowCenter.Instance.Open(); m_CheckFaBaoWinOpen = true; UI3DTreasureSelectStage.Instance.OnUnlockComplete += FaBaoAnimationFinished; WindowCenter.Instance.windowAfterOpenEvent += OnWindowOpen; } private void FaBaoAnimationFinished() { UI3DTreasureSelectStage.Instance.OnUnlockComplete -= FaBaoAnimationFinished; UI3DTreasureSelectStage.Instance.showCamera.GetComponent().enabled = false; SnxxzGame.Instance.StartCoroutine(WaitForBack()); } private void Step_4_TalkFinished() { // 显示任务界面 Transform _temp = WindowCenter.Instance.Get().transform.Find("TaskAndTeamTip/TaskListTip"); _temp.SetActive(true); GA_Hero.s_MapSwitching = false; // 创建传送区域 if (m_SimpleTransfer == null) { m_SimpleTransfer = CreateTransfer(); } m_SimpleTransfer.transform.position = m_SecondTransferStartPos; m_SimpleTransfer.transform.localScale = new Vector3(1.3f, 50, 1.3f); m_SimpleTransfer.Init(1044, m_SecondTransferEndPos, true, () => { SFXPlayUtility.Instance.Release(m_MoveToEffect); m_MoveToEffect = null; m_FuncNpc.ReleaseName(); }, Step_4_TransferFinished); m_SimpleTransfer.curveType = 2; // 光标指示 m_MoveToEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1041, new Vector3(122.457f, 51.7f, 33.328f), new Vector3(90, 0, 0)); m_MoveToEffect.duration = -1; m_FabaoEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1051, new Vector3(129.98f, 51.548f, 33.13f), new Vector3(0, -90.81f, 0)); if (PlayerDatas.Instance.hero!=null) { PlayerDatas.Instance.hero.MoveToPosition(m_SecondTransferStartPos); } DebugEx.Log("第四个对话结束..."); } // 前期战斗流程结束 public void Step_4_TransferFinished() { m_SpecialGuideId = -1; m_IsServerNewPlayerMissionFinished = true; if (m_FuncNpc != null) { GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID); GAMgr.Instance.Release(m_FuncNpc); m_FuncNpc = null; } missionNpcDict.Clear(); s_MissionDict.Clear(); s_MissionImpasseDict.Clear(); refreshNpcHandlerList.Clear(); if (m_SimpleTransfer) { Object.Destroy(m_SimpleTransfer.gameObject); m_SimpleTransfer = null; } if (m_ObstacleEffect) { Object.Destroy(m_ObstacleEffect.gameObject); m_ObstacleEffect = null; } if (m_HuaShouEffect) { Object.Destroy(m_HuaShouEffect.gameObject); m_HuaShouEffect = null; } if (m_FabaoEffect) { SFXPlayUtility.Instance.Release(m_FabaoEffect); m_FabaoEffect = null; } Transform _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/TopRightTip"); _temp.SetActive(true); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/HighSettingShow"); _temp.SetActive(true); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/BoxContainer"); _temp.SetActive(true); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(true); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/InGameDownLoadProgress"); _temp.localScale = Vector3.one; //_temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/SwitchPan_a"); //_temp.localScale = Vector3.one; //_temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SkillButtonTip/Pivot/CastSkillTip/Btn_SkillXp"); //_temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/ChatTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/LowSettingTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/SwitchShowBtn"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/PatternBtn"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/VIPBtn"); _temp.GetComponent().enabled = true; _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/FunctionForecastTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip"); _temp.SetActive(true); _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskSwithButton"); _temp.localScale = Vector3.one; ButtonEx _button = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/HeadPortraitTip/Head").GetComponent(); _button.enabled = true; skillContainer.skill1.transform.localScale = Vector3.one; skillContainer.skill2.transform.localScale = Vector3.one; skillContainer.skill3.transform.localScale = Vector3.one; skillContainer.skill4.transform.localScale = Vector3.one; skillContainer.blinkSkill.transform.localScale = Vector3.one; skillContainer.switchButton.SetActive(true); skillContainer.transform.localScale = Vector3.one; WindowCenter.Instance.Close(); CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount(); _a225.CountID = 3; GameNetSystem.Instance.SendInfo(_a225); // 资源卸载 if (!AssetSource.sceneFromEditor) { UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync("Map000_Xsdt"); AssetBundleUtility.Instance.UnloadAssetBundle("maps/map000_xsdt", true, false); } List _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightNorm); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightBoss); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFunc); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } GameObjectPoolManager.Instance.UnLoadNPC(1000); GameObjectPoolManager.Instance.UnLoadNPC(1003); GameObjectPoolManager.Instance.UnLoadNPC(1006); GameObjectPoolManager.Instance.UnLoadNPC(1007); GameObjectPoolManager.Instance.UnLoadNPC(1008); GameObjectPoolManager.Instance.UnLoadNPC(1009); if (!AssetSource.mobFromEditor) { AssetBundleUtility.Instance.UnloadAssetBundle("gmodels/prefab_race_n017a", true, true); } DebugEx.Log("前期结束..."); } private IEnumerator Co_Destroy() { if (IsFinished()) { yield break; } WindowCenter.Instance.Close(); CameraController.Instance.MaskCamera.SetActive(false); if (m_MoveToEffect) { SFXPlayUtility.Instance.Release(m_MoveToEffect); m_MoveToEffect = null; } mDestroy = true; m_SpecialGuideId = -1; m_IsServerNewPlayerMissionFinished = true; if (m_FuncNpc != null) { GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID); GAMgr.Instance.Release(m_FuncNpc); m_FuncNpc = null; } missionNpcDict.Clear(); s_MissionDict.Clear(); s_MissionImpasseDict.Clear(); refreshNpcHandlerList.Clear(); if (m_SimpleTransfer) { Object.Destroy(m_SimpleTransfer.gameObject); m_SimpleTransfer = null; } if (m_ObstacleEffect) { Object.Destroy(m_ObstacleEffect.gameObject); m_ObstacleEffect = null; } if (m_HuaShouEffect) { Object.Destroy(m_HuaShouEffect.gameObject); m_HuaShouEffect = null; } if (m_FabaoEffect) { SFXPlayUtility.Instance.Release(m_FabaoEffect); m_FabaoEffect = null; } var _temp = WindowCenter.Instance.Get().transform.Find("CopyOfThePanel/TopRightTip"); _temp.SetActive(true); _temp = WindowCenter.Instance.Get().transform.Find("CopyOfThePanel/HighSettingTip/HighSettingShow"); _temp.SetActive(true); _temp = WindowCenter.Instance.Get().transform.Find("CopyOfThePanel/HighSettingTip/BoxContainer"); _temp.SetActive(true); _temp = WindowCenter.Instance.Get().transform.Find("CopyOfThePanel/HighSettingTip/Container_Treasure"); _temp.SetActive(true); _temp = WindowCenter.Instance.Get().transform.Find("InGameDownLoadProgress"); _temp.localScale = Vector3.one; //_temp = WindowCenter.Instance.Get().transform.Find("SkillButtonTip/Pivot/CastSkillTip/SwitchPan_a"); //_temp.localScale = Vector3.one; //_temp = WindowCenter.Instance.Get().transform.Find("SkillButtonTip/Pivot/CastSkillTip/Btn_SkillXp"); //_temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("ChatTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("LowSettingTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("SwitchShowBtn"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("HeadPortraitTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("HeadPortraitTip/PatternBtn"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("HeadPortraitTip/VIPBtn"); _temp.GetComponent().enabled = true; _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("FunctionForecastTip"); _temp.localScale = Vector3.one; _temp = WindowCenter.Instance.Get().transform.Find("TaskAndTeamTip/TaskListTip"); _temp.SetActive(true); _temp = WindowCenter.Instance.Get().transform.Find("TaskSwithButton"); _temp.localScale = Vector3.one; ButtonEx _button = WindowCenter.Instance.Get().transform.Find("HeadPortraitTip/Head").GetComponent(); _button.enabled = true; skillContainer.skill1.transform.localScale = Vector3.one; skillContainer.skill2.transform.localScale = Vector3.one; skillContainer.skill3.transform.localScale = Vector3.one; skillContainer.skill4.transform.localScale = Vector3.one; skillContainer.blinkSkill.transform.localScale = Vector3.one; skillContainer.switchButton.SetActive(true); skillContainer.transform.localScale = Vector3.one; WindowCenter.Instance.Close(); if (m_FuncNpc != null) { GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID); GAMgr.Instance.Release(m_FuncNpc); m_FuncNpc = null; } missionNpcDict.Clear(); s_MissionDict.Clear(); s_MissionImpasseDict.Clear(); refreshNpcHandlerList.Clear(); if (m_SimpleTransfer) { Object.Destroy(m_SimpleTransfer.gameObject); m_SimpleTransfer = null; } if (m_ObstacleEffect) { Object.Destroy(m_ObstacleEffect.gameObject); m_ObstacleEffect = null; } if (m_HuaShouEffect) { Object.Destroy(m_HuaShouEffect.gameObject); m_HuaShouEffect = null; } if (m_FabaoEffect) { SFXPlayUtility.Instance.Release(m_FabaoEffect); m_FabaoEffect = null; } List _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightNorm); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightBoss); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFunc); if (_list != null) { for (int i = _list.Count - 1; i >= 0; --i) { GAMgr.Instance.ServerDie(_list[i].ServerInstID); GAMgr.Instance.Release(_list[i]); } } GameObjectPoolManager.Instance.UnLoadNPC(1000); GameObjectPoolManager.Instance.UnLoadNPC(1003); GameObjectPoolManager.Instance.UnLoadNPC(1006); GameObjectPoolManager.Instance.UnLoadNPC(1007); GameObjectPoolManager.Instance.UnLoadNPC(1008); GameObjectPoolManager.Instance.UnLoadNPC(1009); if (!AssetSource.mobFromEditor) { AssetBundleUtility.Instance.UnloadAssetBundle("gmodels/prefab_race_n017a", true, true); } // 资源卸载 if (!AssetSource.sceneFromEditor) { // var _operation = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync("Map000_Xsdt"); // while (_operation.isDone) // { // yield return null; // } AssetBundleUtility.Instance.UnloadAssetBundle("maps/map000_xsdt", true, false); } } private bool mDestroy = false; public void Destroy() { SnxxzGame.Instance.StartCoroutine(Co_Destroy()); } private SimpleMapTrasfer CreateTransfer() { // 创建传送对象, 传送对象里会创建云 GameObject _transport = new GameObject(); CapsuleCollider _collider = _transport.AddMissingComponent(); _collider.height = 10; _collider.isTrigger = true; #if UNITY_EDITOR _transport.name = "Temp_Trigger_1"; #endif _transport.transform.position = m_FirstTrransferStartPos; SimpleMapTrasfer _transfer = _transport.AddMissingComponent(); return _transfer; } private GA_NpcClientFunc CreateFuncNpc(uint npcID, Vector3 position, Vector3 eulerAngle) { GA_NpcClientFunc _func = GAMgr.Instance.ReqClntNoFightNpc(npcID, E_ActorGroup.FuncNpc) as GA_NpcClientFunc; _func.AdjustPos((ushort)(position.x * 2), (ushort)(position.z * 2)); _func.Root.eulerAngles = eulerAngle; _func.Forward = _func.Root.forward; return _func; } private GA_NpcClientFightNorm CreateClntNorm(uint npcID, Vector3 position, Vector3 eulerAngle) { GA_NpcClientFightNorm _fight = GAMgr.Instance.ReqClntFightNpc(npcID, E_ActorGroup.Enemy) as GA_NpcClientFightNorm; _fight.AdjustPos((ushort)(position.x * 2), (ushort)(position.z * 2)); _fight.BornPos = _fight.Pos; _fight.Root.eulerAngles = eulerAngle; _fight.Forward = _fight.Root.forward; return _fight; } private GA_NpcClientFightBoss CreateClntBoss(uint npcID, Vector3 position, Vector3 eulerAngle) { GA_NpcClientFightBoss _fight = GAMgr.Instance.ReqClntFightNpc(npcID, E_ActorGroup.Enemy) as GA_NpcClientFightBoss; _fight.AdjustPos((ushort)(position.x * 2), (ushort)(position.z * 2)); _fight.BornPos = _fight.Pos; _fight.Root.eulerAngles = eulerAngle; _fight.Forward = _fight.Root.forward; return _fight; } public void Create8SmallBoss(Vector3 postion) { for (int i = 0; i < 8; ++i) { GA_NpcClientFightNorm _boss = CreateClntNorm(1006, postion, new Vector3(0, i * 45, 0)); Skill _skill = _boss.SkillMgr.Get(10028); _skill.targetPosition = _boss.Pos + _boss.Forward * 3; _boss.SkillMgr.CastSkill(_boss.ServerInstID, 10028); _boss.NextAction = 21; } } }