using System.Collections; using System.Collections.Generic; using UnityEngine; using KTGMGemClient; /// /// 新手引导控制脚本 /// public class GuideCtrl : MonoBehaviour { private static GuideCtrl ins; public static GuideCtrl Ins { get { return ins; } } GuidePanelNew panel;//UI Dictionary allGuideDic; GuideEnum currentStep;//当前引导到了第几步 /// /// Awake is called when the script instance is being loaded. /// void Awake() { ins = this; AddDic(); currentStep = GuideEnum.None; panel = gameObject.AddComponent(); } private void Start() { //int step = PlayerPrefs.GetInt("GemBattleGuide"); TDAA_SDKManager.Ins.Statistics(5);//埋点 Init(0); EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWoodLv2, CreateWoodLv2); EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillDone, KillDone); EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv1, CreateFireLv1); EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); EventCenter.Ins.Add((int)KTGMGemClient.EventType.DragStep, DragStep); EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillSecondDone, KillSecondDone); EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillThirdDone, KillThirdDone); EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFourthWaveDone, CreateFourthWaveDone); } private void OnDestroy() { EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWoodLv2, CreateWoodLv2); EventCenter.Ins.Remove((int)KTGMGemClient.EventType.KillDone, KillDone); EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateFireLv1, CreateFireLv1); EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); EventCenter.Ins.Remove((int)KTGMGemClient.EventType.DragStep, DragStep); } public void Init(int step) { ChangeStep(GuideEnum.Step1); GameConfig.CanOpenNewTower = false; } /// /// 初始化字典 /// void AddDic() { allGuideDic = new Dictionary(); allGuideDic.Add(GuideEnum.Step1, new string[] { "对面的怪物要发动攻击了,训练师大人,请做好防御准备", "我给您准备了一份宝箱大礼,打开试试"}); allGuideDic.Add(GuideEnum.Step2, new string[] { "点击按钮购买精灵", "再购买一个" }); allGuideDic.Add(GuideEnum.Step3, new string[] { "玉米枪手单体输出高,能有效克制$单位",// $ 慢速肉盾 "看到走路慢吞吞的怪,就用玉米枪手对付它吧!" , "接下来该换我亲自上阵了"}); allGuideDic.Add(GuideEnum.Step4, new string[] { "点击按钮购买精灵" }); allGuideDic.Add(GuideEnum.Step5, new string[] { "对付%敌人,我的`是最合适的", // % 大量 ` 群攻炸弹 "请交换我和玉米枪手的位置!以后也可以随时交换哦" , "最后的伙伴已经达到战场,看看它是谁吧"}); allGuideDic.Add(GuideEnum.Step6, new string[] { "点击按钮购买精灵" }); allGuideDic.Add(GuideEnum.Step7, new string[] { "不好,敌人太多了", "试着用技能秒杀全部敌人吧!", "对付不同敌人,用&效果更好,请继续战斗吧,训练师"// & 特定的精灵 }); } /// /// 引导步骤 /// /// public void ChangeStep(GuideEnum step) { currentStep = step; switch (currentStep) { case GuideEnum.Step1: Step1(); break; case GuideEnum.Step2: Step2(); break; case GuideEnum.Step3: Step3(); break; case GuideEnum.Step4: Step4(); break; case GuideEnum.Step5: Step5(); break; case GuideEnum.Step6: Step6(); break; case GuideEnum.Step7: Step7(); break; case GuideEnum.Finish: Finish(); break; } } #region 步骤分解 //步骤1 :对话---开箱---玉米 private void Step1() { CommonDebugHelper.DebugError("步骤1 :对话---开箱---玉米"); panel.Step1(allGuideDic[currentStep], Step1Finish); } private void Step1Finish() { Debug.Log("玉米组件展示结束,打点"); TDAA_SDKManager.Ins.GuideStep(1);//埋点 TDAA_SDKManager.Ins.Statistics(6);//埋点 ChangeStep(GuideEnum.Step2); } //步骤2:购买---购买---合成---上阵 private void Step2() { CommonDebugHelper.DebugError("步骤2:购买---购买---合成---上阵"); panel.Step2(allGuideDic[currentStep]); } public void BeginDrag() { panel.RimWood1(); } public void EndDrag() { panel.RimWood2(); } //合成了2级木 准备引导上阵 public void AddCard() { panel.AddCard(); } /// /// 上阵一个二级木元素 /// private void CreateWoodLv2() { panel.OnWoodAttackPos(); ChangeStep(GuideEnum.Step3); } /// /// 步骤3 :对话---出兵后杀光---对话---展示火鸡 /// /// /// public void Step3() { CommonDebugHelper.DebugError("步骤3 :对话---出兵后杀光---对话---展示火鸡"); Debug.Log("玉米上阵了,打点"); TDAA_SDKManager.Ins.GuideStep(2);//埋点 string[] s1 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] }; panel.Step3(s1, AfterTalk); } /// /// 对话结束,出兵 /// private void AfterTalk() { panel.Step3AfterTalk(); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateFirstWave); } /// /// 第一关怪物被杀光 /// private void KillDone() { string[] s2 = new string[] { allGuideDic[currentStep][2] }; panel.CloseSkillImage(); panel.Step3(s2, OpenBoxFire); } /// /// 展示火鸡 /// private void OpenBoxFire() { panel.Step3_3(() => { ChangeStep(GuideEnum.Step4); }); } /// /// 步骤4 :点击购买---上阵 /// /// /// public void Step4() { Debug.Log("火鸡组件展示完毕,打点"); TDAA_SDKManager.Ins.GuideStep(3);//埋点 panel.Step4(allGuideDic[currentStep]); } private void CreateFireLv1() { panel.OnFireAttackPos(); ChangeStep(GuideEnum.Step5); } /// /// 步骤5:第二关出兵---三波后---对话框---置换2&3---杀光敌人---对话框---展示water /// /// /// public void Step5() { Debug.Log("火鸡上阵了,打点"); //第二关出兵 TDAA_SDKManager.Ins.GuideStep(4);//埋点 //panel.Step5() EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateSecondWave); } private void DragStep() { string[] s2 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] }; panel.Step5(s2); } //开始拖拽 public void BeginDrag5_1() { panel.Step5Drag(1); } //结束推拽 没有合成,回到上一步 public void EndDrag5_1() { panel.Step5Drag(0); } public void DragDone() { GameConfig.CanDragTower = false; CommonDebugHelper.Debug("结束拖拽"); panel.Step5Drag(2); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.RestartWave); //ChangeStep(GuideEnum.Step6); } private void KillSecondDone() { string[] s2 = new string[] { allGuideDic[currentStep][2] }; panel.Step5Talk(s2, OpenBoxWater); } /// /// 展示水 /// private void OpenBoxWater() { panel.Step5_7(() => { ChangeStep(GuideEnum.Step6); }); } /// /// 步骤6:购买---上阵---第三关---杀光 /// /// /// public void Step6() { Debug.Log("展示雪糕完毕,打点"); TDAA_SDKManager.Ins.GuideStep(5);//埋点 panel.Step6(allGuideDic[currentStep]); } /// /// 水元素上阵了 /// private void CreateWaterLv1() { panel.OnWaterAttackPos(); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave);//开始第三关 } private void KillThirdDone() { ChangeStep(GuideEnum.Step7); } /// /// 步骤6: /// /// /// public void Step7() { Debug.Log("第三关杀完怪了,打点"); TDAA_SDKManager.Ins.GuideStep(6);//埋点 //一大波 panel.Step7(); } private void CreateFourthWaveDone() { string[] s1 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] }; //对话后准备引导 panel.Step7Talk(s1, Step7AfterTalk); } private void Step7AfterTalk() { string[] s2 = new string[] { allGuideDic[currentStep][2] }; panel.SkillRelease(s2, Finish); } private void Finish() { UnityEngine.Debug.Log("新手指导已经完成了"); Debug.Log("完成新手引导,打点"); TDAA_SDKManager.Ins.GuideStep(7);//埋点 GameConfig.CanOpenNewTower = true; GameConfig.CanBuyNewTower = true; panel.FinishGuide(); EndlessRandomTower.instance.SetCountDown(false, true); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GuideFinish); PlayerPrefs.SetInt("GemBattleGuide", 1); Destroy(gameObject); } #endregion #region 点击事件 /// /// 完成了当前步骤中的一个分步骤 /// public void OnFinishOneStep() { // if (needIndex - currentIndex > 0) // { // //说明当前步骤没完成,进行下一个分步 // currentIndex++; // ChangeStep(currentStep); // } // else // { // //开始新的步骤 // currentIndex = -1; // ChangeStep(currentStep + 1); // } } #endregion }