From 8afc9ce1c752c24decad77e0989b367b8f2c4179 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Thu, 29 Oct 2020 14:34:52 +0800 Subject: [PATCH] Merge branch 'master' of ssh://172.16.1.52:8091/GemBattle --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 36 insertions(+), 16 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 0a94bfc..39f916e 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -1198,18 +1198,6 @@ SetState(State.Normal); // 新的代码,合并升级为随机塔防类型. randomUpgradeTower(); - // 在sTower的位置播放升级特效 - GameObject obj = Instantiate(TowerUpgradeEffectPrefab); - obj.transform.position = sTower.transform.position; - Vector3 pos = obj.transform.position; - pos.y += 5f; - obj.transform.position = pos; - ParticleSystem ps = obj.GetComponent<ParticleSystem>(); - - if (ps == null) - ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>(); - ps.Play(); - Destroy(obj, ps.main.duration); } } else @@ -1242,6 +1230,35 @@ { PlaceGhost(pointer); } + } + + /// <summary> + /// 播放升级特效 + /// </summary> + /// <param name="worldPos"></param> + public void PlayUpgradeEffect(Tower newTower) + { + GameObject effect = TowerUpgradeEffectPrefab; + + if (newTower.towerFeature == EFeatureTower.NULL) + { + string path = $"UI/ToBattle_{newTower.attributeId}"; + GameObject prefab = Resources.Load<GameObject>(path); + effect = Instantiate(prefab); + } + + // 在sTower的位置播放升级特效 + GameObject obj = Instantiate(effect); + obj.transform.position = newTower.transform.position; + Vector3 pos = obj.transform.position; + pos.y += 5f; + obj.transform.position = pos; + ParticleSystem ps = obj.GetComponent<ParticleSystem>(); + + if (ps == null) + ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.Play(); + Destroy(obj, ps.main.duration); } /// <summary> @@ -1309,7 +1326,7 @@ /// <exception cref="InvalidOperationException"> /// Throws exception if not in Build State or <see cref="m_CurrentTower"/> is not at a valid position /// </exception> - public void PlaceTower(int lvl = 0, bool opponent = false) + public void PlaceTower(int lvl = 0, bool isUpgrade = false, bool opponent = false) { if (!isBuilding) throw new InvalidOperationException("Trying to place tower when not in a Build Mode"); @@ -1330,7 +1347,10 @@ // River: 内部缓存数据,用于后期容易找到数据. addTower(createdTower); CancelGhostPlacement(); - PlayAppearEffect(createdTower.transform.position); + if (!isUpgrade) + PlayAppearEffect(createdTower.transform.position); + else + PlayUpgradeEffect(createdTower); // 处理成长骰子,复制骰子等等功能. if (lvl == 0) @@ -1520,7 +1540,7 @@ /// 直接在IPlaceArea上随机放置一个Tower。这是随机放置塔防的入口类。这是入口的塔防类。 /// </summary> /// <param name="tow"></param> - public bool RandomPlaceTower(Tower tow, int posx = -1, int posy = -1, int lvl = 0, int forceCost = -1) + public bool RandomPlaceTower(Tower tow, int posx = -1, int posy = -1, int lvl = 0, int forceCost = -1, bool isUpgrade = false) { // 获取IPlaceArea. if (m_CurrentArea == null) @@ -1584,7 +1604,7 @@ OnSuccessBuyTower(); SetState(State.Building); - PlaceTower(lvl); + PlaceTower(lvl, isUpgrade); } return true; -- Gitblit v1.9.1