Assets/Resources/UI/Guide/GameObject.prefab
File was deleted Assets/Resources/UI/Guide/GameObject.prefab.meta
File was deleted Assets/Resources/UI/Guide/GuidePanel.prefab
@@ -10585,6 +10585,85 @@ m_Script: {fileID: 11500000, guid: b853ac60c2d385d4dbc98c0d558451bb, type: 3} m_Name: m_EditorClassIdentifier: --- !u!1 &4194100260256678997 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 3729847023059857890} - component: {fileID: 420363371752327425} - component: {fileID: 4803840975682259644} m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!224 &3729847023059857890 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4194100260256678997} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 5284319985334853514} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &420363371752327425 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4194100260256678997} m_CullTransparentMesh: 0 --- !u!114 &4803840975682259644 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4194100260256678997} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 50 m_FontStyle: 0 m_BestFit: 0 m_MinSize: 3 m_MaxSize: 50 m_Alignment: 4 m_AlignByGeometry: 0 m_RichText: 1 m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u5927\u6CE2\u654C\u4EBA\u6765\u88AD" --- !u!1 &4283419727313149636 GameObject: m_ObjectHideFlags: 0 @@ -16623,6 +16702,82 @@ m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 --- !u!1 &8581094352095596645 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 5284319985334853514} - component: {fileID: 3706244911713911788} - component: {fileID: 3573362040006469024} m_Layer: 5 m_Name: Image_Warning m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!224 &5284319985334853514 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8581094352095596645} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 3729847023059857890} m_Father: {fileID: 5529930024907350475} m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 700, y: 300} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &3706244911713911788 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8581094352095596645} m_CullTransparentMesh: 0 --- !u!114 &3573362040006469024 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8581094352095596645} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] m_Sprite: {fileID: 0} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 --- !u!1 &8765142430134729489 GameObject: m_ObjectHideFlags: 0 @@ -16666,6 +16821,7 @@ - {fileID: 4438159195928217730} - {fileID: 4727596860417850039} - {fileID: 1725281817447037252} - {fileID: 5284319985334853514} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} Assets/Scripts/Common/GameConfig.cs
@@ -50,7 +50,10 @@ /// 是否是新手 /// </summary> public static bool IsNewbie = false; /// <summary> /// 是否JSON读取完毕 /// </summary> public static bool JsonReadDone = false; /// <summary> /// 新手模式是否可以推拽塔 /// </summary> Assets/Scripts/Event/EventType.cs
@@ -33,6 +33,8 @@ SkillStep, //修改步骤为拖拽交换位置 DragStep, //显示大波敌人来袭文字 ShowWarningTips, //第三关小怪5路全出 CreateThirdWave, //第三关小怪5路全出完毕 Assets/Scripts/Guide/GuideConfig.cs
@@ -39,7 +39,8 @@ //9 //"这样就可以了,刚好水精灵也到达战场了。", "水精灵的攻击会使敌人`,快去召唤他试试吧。", //"水精灵的攻击会使敌人`,快去召唤他试试吧。", "继续购买,看能抽到什么精灵", //10 //"点击按钮购买宝石", @@ -48,8 +49,8 @@ //11 //"不好不好,敌人快冲破防线了。", //"还好我留了一手,送你一个技能宝石,快用它来化解危机吧。", "属性相克", "交换打的更快", "面对血厚的怪物,使用玉米精灵对付它", "拖动可随时交换精灵位置!", //12 "不好不好,敌人太多了", Assets/Scripts/Guide/GuideCtrl.cs
@@ -43,6 +43,7 @@ EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); //EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillStep, SkillStep); EventCenter.Ins.Add((int)KTGMGemClient.EventType.DragStep, DragStep); EventCenter.Ins.Add((int)KTGMGemClient.EventType.ShowWarningTips, ShowWarningTips);//开始第三关,弹一大波敌人 EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateThirdWaveDone, CreateThirdWaveDone); //EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); @@ -524,23 +525,34 @@ EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.RestartWave); } /// <summary> /// 大波敌人来袭 /// </summary> private void ShowWarningTips() { CommonDebugHelper.Debug("这里需要显示大波敌人来袭"); panel.Step11_End(); //结束后需要 //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave); } private void CreateThirdWaveDone() { currentIndex = -1; ChangeStep(GuideEnum.Step12); } private void SkillRelease() { panel.SkillRelease(); } // private void SkillRelease() // { // panel.SkillRelease(); // } private void SkillReleaseDone() { currentIndex = -1; ChangeStep(GuideEnum.Step12); } // private void SkillReleaseDone() // { // currentIndex = -1; // ChangeStep(GuideEnum.Step12); // } private void Step12() { Assets/Scripts/Guide/GuidePanel.cs
@@ -49,6 +49,7 @@ Button skillBtn;// Vector2 skillBtnPos = new Vector2(459, 280); private Image warningImg;//大波敌人来袭提示 /// <summary> /// 关闭所有UI /// </summary> @@ -143,6 +144,9 @@ dragHandImg = transform.Find("ImageHand").GetComponent<RectTransform>(); dragHandImg.gameObject.SetActive(false); warningImg = transform.Find("Image_Warning").GetComponent<Image>(); warningImg.gameObject.SetActive(false); } @@ -346,7 +350,7 @@ /// <summary> /// 第九步, /// 第九步,购买水元素,第二步上阵 /// </summary> /// <param name="str"></param> /// <param name="currentIndex">当前第几步</param> @@ -392,7 +396,7 @@ } /// <summary> /// 第12步,引导释放技能 /// 第12步,弃用 /// </summary> public void Step11(int currentIndex, string str) { @@ -430,7 +434,7 @@ /// <summary> /// 第12步,引导释放技能 /// 第12步,交换水火塔 /// </summary> public void Step11Drag(int currentIndex) { @@ -447,8 +451,9 @@ btnImg.raycastTarget = false; InitRectGuidance(btnImg, 75, 80, tmpOffect); SetRimPos(towerPos2.gameObject); StartCoroutine(ShowRimTip("拖动")); //SetRimPos(towerPos2.gameObject); SetRimPos(towerPos2.gameObject, new Vector2(0, 30)); StartCoroutine(ShowRimTip("交换")); ShowDragPath(towerPos2.GetComponent<RectTransform>().anchoredPosition, towerPos.GetComponent<RectTransform>()); } @@ -458,8 +463,10 @@ btnImg.raycastTarget = false; InitRectGuidance(btnImg, 75, 80, tmpOffect); SetRimPos(towerPos.gameObject); StartCoroutine(ShowRimTip("拖动")); //SetRimPos(towerPos.gameObject); SetRimPos(towerPos.gameObject, new Vector2(0, 10)); StartCoroutine(ShowRimTip("交换")); } else if (currentIndex == 2) @@ -467,6 +474,33 @@ SetRimActive(false); StopShowDragPath(true); CloseMask(); } } /// <summary> /// 一大波敌人 /// </summary> public void Step11_End() { warningImg.color = new Color(1.0f, 1.0f, 1.0f, 0); warningImg.gameObject.SetActive(true); colorCount = 0; SetWarningColor(); } int colorCount = 0; private void SetWarningColor() { if (colorCount < 4) { colorCount++; warningImg.DOFade(colorCount % 2, 1.0f).OnComplete(SetWarningColor); CommonDebugHelper.Debug($"执行了{colorCount}次"); } else { EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave); warningImg.gameObject.SetActive(false); } } @@ -490,7 +524,9 @@ AddButtonListener(skillBtn.gameObject, ac); Image btnImg = skillBtn.GetComponent<Image>(); InitRectGuidance(btnImg, 79, 79f, Vector2.one); SetRimPos(skillBtn.gameObject); //SetRimPos(skillBtn.gameObject); SetRimPos(skillBtn.gameObject, new Vector2(-15, 10)); text_Tip.text = str;//动态改变长度 StartCoroutine(ShowRimTip(str)); } @@ -554,6 +590,41 @@ } /// <summary> /// 设置边框的大小和位置 /// </summary> /// <param name="target"></param> private void SetRimPos(GameObject target, Vector2 offect) { SetRimActive(true); RectTransform rt = target.GetComponent<RectTransform>(); if (target.gameObject.name == "TowerBuyBtn") { image_Rim_Rect.anchoredPosition = towerBuyBtnPos - tmpOffect; } else if (target.gameObject.name == "FireSkillBtn") { image_Rim_Rect.anchoredPosition = skillBtnPos - tmpOffect; } else { image_Rim_Rect.anchoredPosition = rt.anchoredPosition; } image_Rim_Rect.sizeDelta = (rt.sizeDelta * rt.localScale) + rimOffset; if (image_Rim_Rect.sizeDelta.x > 200) { particle_1.SetActive(false); particle_2.SetActive(true); } else { particle_1.SetActive(true); particle_2.SetActive(false); } image_Tip_Rect.anchoredPosition = new Vector2(image_Rim_Rect.anchoredPosition.x, image_Rim_Rect.anchoredPosition.y + 74 / 2 + image_Rim_Rect.sizeDelta.y / 2); image_Tip_Rect.anchoredPosition += offect; } IEnumerator ShowRimTip(string str) { text_Tip.text = str;//动态改变长度 Assets/Scripts/Json/JsonDataCenter.cs
@@ -270,7 +270,7 @@ EndlessBossData.Init(); EndlessBossSkillData.Init(); //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.JsonDataReadDone); GameConfig.JsonReadDone = true; } } } Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
@@ -157,10 +157,7 @@ Debug.Log("新手不可以拖拽"); return; } else { GuideCtrl.Ins.BeginDrag11_1(); } } // select towers m_GameUI.TrySelectTower(pointer); @@ -181,6 +178,10 @@ currentTimeScale = Time.timeScale; Time.timeScale = 0.5f; } else { GuideCtrl.Ins.BeginDrag11_1(); } } } Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
@@ -255,10 +255,7 @@ Debug.Log("新手不可以拖拽"); return; } else { GuideCtrl.Ins.BeginDrag11_1(); } } //按照鼠标键盘的修改 // select towers @@ -283,6 +280,10 @@ currentTimeScale = Time.timeScale; Time.timeScale = 0.5f; } else { GuideCtrl.Ins.BeginDrag11_1(); } } } Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -437,7 +437,8 @@ { //Debug.Log("开始第三关???"); isSecondLevelCompleted = true; EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave); EndlessUIStart.instance.Pause(); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ShowWarningTips); } } } Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -77,8 +77,12 @@ root.AddComponent<JsonDataReader>(); root.AddComponent<JsonDataInit>(); } firstStart = true; //EventCenter.Ins.Add((int)KTGMGemClient.EventType.JsonDataReadDone, JsonDataReadDone); } Vector2 tmpOffect;//计算适配的偏移量 bool firstStart = true; // Start is called before the first frame update void Start() { @@ -103,7 +107,7 @@ float tmpScale = ratio / ts.localScale.x - 1.0f; float offect = tmpScale * (ts.sizeDelta.y * 0.5f); //Debug.Log($"tmpScale:{tmpScale} offect:{offect}"); Vector2 tmpOffect = new Vector2(0, offect); tmpOffect = new Vector2(0, offect); transform.Find("Panel/Bottom").GetComponent<RectTransform>().anchoredPosition += tmpOffect; transform.Find("Panel/TowerBuyBtn").GetComponent<RectTransform>().anchoredPosition += tmpOffect; transform.Find("Panel/SwitchSpeed").GetComponent<RectTransform>().anchoredPosition += tmpOffect; @@ -119,23 +123,9 @@ darkGroundImg.GetComponent<RectTransform>().offsetMax -= tmpOffect * 0.5f; darkGroundImg.SetActive(false); //查询是否已经做过了新手引导 int guide = PlayerPrefs.GetInt("GemBattleGuide"); GameConfig.IsNewbie = guide == 0; if (GameConfig.IsNewbie) { Debug.Log("开始新手引导"); GameConfig.CanDragTower = false; Pause(); HideUIMask(); countDownTextNew.text = ""; countDownTextNew.gameObject.SetActive(false); GameObject guideObj = Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), transform.Find("Panel")); guideObj.GetComponent<RectTransform>().offsetMin += tmpOffect; AddGuideEvent(); } //CheckIsNewbie(); GameConfig.EndlessOpenAttackTowerCount = 0; GameConfig.EndlessBuyTowerCount = 0; @@ -168,6 +158,26 @@ EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillLevelUpBuff, SkillLevelUpBuff); } private void CheckIsNewbie() { //GameConfig.IsNewbie = false; if (GameConfig.IsNewbie) { Debug.Log("开始新手引导"); GameConfig.CanDragTower = false; Pause(); HideUIMask(); countDownTextNew.text = ""; countDownTextNew.gameObject.SetActive(false); GameObject guideObj = Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), transform.Find("Panel")); guideObj.GetComponent<RectTransform>().offsetMin += tmpOffect; AddGuideEvent(); transform.Find("Panel/SwitchSpeed").gameObject.SetActive(false); } } /// <summary> @@ -326,6 +336,8 @@ /// </summary> private void CreateThirdWave() { CommonDebugHelper.Debug($"开始下一关"); EndlessLevelManager.instance.NewbieUpdateLevel(); beginDragStep = false; guideThirdWaveStep = true; @@ -371,6 +383,8 @@ { EndlessLevelManager.instance.RestartWave(); GameConfig.IsNewbie = false; transform.Find("Panel/SwitchSpeed").gameObject.SetActive(true); } /// <summary> @@ -548,6 +562,16 @@ // Update is called once per frame void Update() { if (firstStart) { if (!GameConfig.JsonReadDone) return; else { firstStart = false; CheckIsNewbie(); } } if (isPause) return; if (bGameStart)