Assets/Prefabs/UI/PlacementTileMobile.prefab
@@ -30,6 +30,7 @@ m_Children: - {fileID: 4082878821884824} - {fileID: 3708897891681601760} - {fileID: 675910950832637167} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -54,6 +55,7 @@ canPlaceRenderer: {fileID: 5722111975221064870} canPlaceMat: {fileID: 2100000, guid: 434316934db1c90498f004f124d7c733, type: 2} selectMat: {fileID: 2100000, guid: 3b7aa7626a2d4674ca2aa32958f14ca9, type: 2} myPS: {fileID: 675910951314242398} --- !u!1 &1648682030917314 GameObject: m_ObjectHideFlags: 0 @@ -216,3 +218,114 @@ m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6911264303789898319} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &6551026705143052334 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 4376446327882660} m_Modifications: - target: {fileID: 6019269231563473776, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: playOnAwake value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269231563473778, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269231827229285, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: playOnAwake value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856512, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_Name value: Effect_ShengJiTiShi objectReference: {fileID: 0} - target: {fileID: 6019269233228856512, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalScale.x value: 0.12647022 objectReference: {fileID: 0} - target: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} propertyPath: m_LocalScale.z value: 0.09259259 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} --- !u!4 &675910950832637167 stripped Transform: m_CorrespondingSourceObject: {fileID: 6019269233228856513, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} m_PrefabInstance: {fileID: 6551026705143052334} m_PrefabAsset: {fileID: 0} --- !u!198 &675910951314242398 stripped ParticleSystem: m_CorrespondingSourceObject: {fileID: 6019269231563473776, guid: 99628a6db7adeb64ebad4ab2dd550ad6, type: 3} m_PrefabInstance: {fileID: 6551026705143052334} m_PrefabAsset: {fileID: 0} Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
@@ -146,6 +146,7 @@ } } float currentTimeScale = 1.0f; protected virtual void OnStartDrag(PointerActionInfo pointer) { // select towers @@ -157,7 +158,9 @@ AudioSourceManager.Ins.Play(AudioEnum.DragTower); m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 //Debug.Log("开始拖拽"); currentTimeScale = Time.timeScale; Time.timeScale = 0.5f; } protected override void OnDrag(PointerActionInfo pointer) @@ -182,7 +185,7 @@ this.isInDragState = false; //Debug.Log("结束拖拽"); Time.timeScale = currentTimeScale; } Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -885,6 +885,8 @@ } } PlacementTile currentCanPlace;//记录当前标记 /// <summary> /// 开始拖拽的时候判断哪些可以放置 /// </summary> @@ -915,7 +917,36 @@ } } PlacementTile currentCanPlace;//记录当前标记 /// <summary> /// 播放升级动画 /// </summary> /// <param name="allTowerP"></param> public void PlayPS(List<IntVector2> allTowerP) { for (int i = 0; i < allTowerP.Count; i++) { m_Tiles[allTowerP[i].x, allTowerP[i].y].SetParticleSystem(true); } } /// <summary> /// /// 停止所有升级动画 /// </summary> public void StopPS() { int iy = dimensions.y - 1;//3 for (int ix = 0; ix < dimensions.x; ix++) { for (int y = iy; y >= dimensions.y - AttackRowNumbers; --y) { if (m_arrGridType[ix, y] == PlacementGridType.EGridOpen) { m_Tiles[ix, y].SetParticleSystem(false); } } } } /// <summary> /// 拖动时候实时检查距离哪个格子近 /// </summary> @@ -956,6 +987,7 @@ } } } StopPS(); } #if UNITY_EDITOR Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -851,21 +851,37 @@ /// </summary> public void CheckAllCanPlace() { List<IntVector2> allTowerP = new List<IntVector2>(); for (int i = 0; i < m_listTower.Count; i++) if (m_CurrentTower != null) { if (m_listTower[i].bInAttackMode && towerToMove && m_listTower[i].currentLevel == dragTowerLevel && m_listTower[i].towerName == towerToMove.towerName) if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { //说明可以合成 List<IntVector2> allTowerP = new List<IntVector2>(); List<IntVector2> allPSTowerP = new List<IntVector2>();//需要播放升级动画的 for (int i = 0; i < m_listTower.Count; i++) { if (m_listTower[i].bInAttackMode && towerToMove && m_listTower[i].currentLevel == dragTowerLevel && m_listTower[i].towerName == towerToMove.towerName) { if (towerToMove.gridPosition != m_listTower[i].gridPosition) //说明可以合成 allPSTowerP.Add(m_listTower[i].gridPosition); } else { //把不符合条件的传进去 allTowerP.Add(m_listTower[i].gridPosition); } } (m_CurrentArea as TowerPlacementGridEndless).CheckAllCanPlace(allTowerP); (m_CurrentArea as TowerPlacementGridEndless).PlayPS(allPSTowerP); } else else if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) { //把不符合条件的传进去 allTowerP.Add(m_listTower[i].gridPosition); //Debug.Log("需要激活兵线下方绿色标识"); } } (m_CurrentArea as TowerPlacementGridEndless).CheckAllCanPlace(allTowerP); } /// <summary> @@ -873,7 +889,8 @@ /// </summary> public void CloseCanPlaceRenderer() { (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer(); if (m_CurrentArea != null) (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer(); } /// <summary> @@ -883,18 +900,22 @@ public void CheckTowerPlace(PointerInfo pointerInfo) { //return; //下面是为了设置一个虚拟的塔 if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) if (m_CurrentArea != null && m_CurrentArea is TowerPlacementGridEndless) { //Debug.Log("得到了一个空的塔位"); //下面是为了设置一个虚拟的塔 if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { //Debug.Log("得到了一个空的塔位"); (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y); //if(temporaryMat) (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y); //if(temporaryMat) } else { (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); } } else { (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); } } /// <summary> Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs
@@ -61,6 +61,8 @@ /// </summary> public Material selectMat; public ParticleSystem myPS;//可以升级的特效 /// <summary> /// Update the state of this placement tile @@ -84,6 +86,21 @@ } } public void SetParticleSystem(bool isOn) { if (isOn) { if (myPS.gameObject.activeSelf != isOn) myPS.gameObject.SetActive(isOn); myPS.Play(); } else { myPS.Stop(); if (myPS.gameObject.activeSelf != isOn) myPS.gameObject.SetActive(isOn); } } /// <summary> /// 设置是否可以放置