From 080100a11100ac8ee44f0742d0a55b12d5db8485 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Fri, 11 Dec 2020 17:13:24 +0800 Subject: [PATCH] 金币效果调整 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 4 Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs | 88 ++++++++++++++ Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs | 1 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs | 2 Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs | 46 +++++++ Assets/Prefabs/UI/AddCurrencyText.prefab.meta | 7 + Assets/Scripts/Core/Economy/Currency.cs | 3 Assets/Prefabs/UI/Endless/BottomCanvas.prefab | 4 Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs | 7 + Assets/Scenes/Levels/Battle/Endless2D.unity | 12 + Assets/Scripts/Event/EventType.cs | 2 Assets/Prefabs/UI/AddCurrencyText.prefab | 137 ++++++++++++++++++++++ 12 files changed, 305 insertions(+), 8 deletions(-) diff --git a/Assets/Prefabs/UI/AddCurrencyText.prefab b/Assets/Prefabs/UI/AddCurrencyText.prefab new file mode 100644 index 0000000..5426563 --- /dev/null +++ b/Assets/Prefabs/UI/AddCurrencyText.prefab @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5155470835180724710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 720277956061902697} + - component: {fileID: 451870121721386500} + - component: {fileID: 3987857009201838382} + m_Layer: 5 + m_Name: AddCurrencyText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &720277956061902697 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155470835180724710} + 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: 0} + m_RootOrder: 0 + 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: -226, y: -872} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &451870121721386500 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155470835180724710} + m_CullTransparentMesh: 0 +--- !u!114 &3987857009201838382 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155470835180724710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: +20 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 572adb1c73f88e441a1bf998ca9f4ea5, type: 2} + m_sharedMaterial: {fileID: -3548855653558765056, guid: 572adb1c73f88e441a1bf998ca9f4ea5, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/UI/AddCurrencyText.prefab.meta b/Assets/Prefabs/UI/AddCurrencyText.prefab.meta new file mode 100644 index 0000000..dc80d87 --- /dev/null +++ b/Assets/Prefabs/UI/AddCurrencyText.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 999d11a8d7094b646970c8002c0bd2fa +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UI/Endless/BottomCanvas.prefab b/Assets/Prefabs/UI/Endless/BottomCanvas.prefab index 1891b12..da9e1a7 100644 --- a/Assets/Prefabs/UI/Endless/BottomCanvas.prefab +++ b/Assets/Prefabs/UI/Endless/BottomCanvas.prefab @@ -4016,6 +4016,8 @@ m_Name: m_EditorClassIdentifier: DisplayText: {fileID: 4623057511285327670} + addCurrencyPrefab: {fileID: 5155470835180724710, guid: 999d11a8d7094b646970c8002c0bd2fa, + type: 3} --- !u!1 &4623057513087273499 GameObject: m_ObjectHideFlags: 0 @@ -5614,7 +5616,7 @@ - target: {fileID: 8530610553866603046, guid: e30e86a0b720a524384db91a4eb22bcb, type: 3} propertyPath: m_AnchoredPosition.y - value: 1405.2777 + value: 259.83737 objectReference: {fileID: 0} - target: {fileID: 8530610554782125076, guid: e30e86a0b720a524384db91a4eb22bcb, type: 3} diff --git a/Assets/Scenes/Levels/Battle/Endless2D.unity b/Assets/Scenes/Levels/Battle/Endless2D.unity index f09713c..2dccecb 100644 --- a/Assets/Scenes/Levels/Battle/Endless2D.unity +++ b/Assets/Scenes/Levels/Battle/Endless2D.unity @@ -4690,10 +4690,20 @@ m_Modification: m_TransformParent: {fileID: 1340671931} m_Modifications: + - target: {fileID: 1864109698340928006, guid: 29da21b318f42054db30c52123aa4dbf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -15 + objectReference: {fileID: 0} + - target: {fileID: 1864109698340928006, guid: 29da21b318f42054db30c52123aa4dbf, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4623057512524248738, guid: 29da21b318f42054db30c52123aa4dbf, type: 3} propertyPath: m_AnchoredPosition.y - value: -0.000030517578 + value: -0.000061035156 objectReference: {fileID: 0} - target: {fileID: 4623057512704841786, guid: 29da21b318f42054db30c52123aa4dbf, type: 3} diff --git a/Assets/Scripts/Core/Economy/Currency.cs b/Assets/Scripts/Core/Economy/Currency.cs index 3c92e93..6c83119 100644 --- a/Assets/Scripts/Core/Economy/Currency.cs +++ b/Assets/Scripts/Core/Economy/Currency.cs @@ -12,6 +12,8 @@ /// </summary> public int currentCurrency { get; private set; } + public int lastCurrency { get; private set; } + /// <summary> /// Occurs when currency changed. /// </summary> @@ -68,6 +70,7 @@ { if (increment != 0) { + lastCurrency = currentCurrency; currentCurrency += increment; if (currencyChanged != null) { diff --git a/Assets/Scripts/Event/EventType.cs b/Assets/Scripts/Event/EventType.cs index 47c26c3..bc34bc5 100644 --- a/Assets/Scripts/Event/EventType.cs +++ b/Assets/Scripts/Event/EventType.cs @@ -118,6 +118,8 @@ OpenAllTowerGrid, // 关闭了精灵升级界面 ElfUpgradePanelClosed, + // 不够开塔,也不够买塔 + SetTowerGridOpenRed, } diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs index e339721..a4fd818 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs @@ -712,6 +712,7 @@ tgo.SetBuyBtnInfo(x, y, this); tgo.cashText.SetText(TowerPlacementGridEndless.GRID_OPENCASH.ToString()); m_arrTGO[x, y] = tgo; + tgo.CheckCurrencyEnough(); } } } @@ -860,6 +861,7 @@ if (m_arrTGO[x, y] != null) { m_arrTGO[x, y].cashText.SetText(GRID_OPENCASH.ToString()); + m_arrTGO[x, y].CheckCurrencyEnough(); } } } diff --git a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs index b93333c..5ea865b 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs @@ -38,6 +38,52 @@ void Start() { bWaitOpen = false; + EventCenter.Ins.Add((int)KTGMGemClient.EventType.SetTowerGridOpenRed, SetRed); + } + + /// <summary> + /// Subscribe to the level manager + /// </summary> + protected virtual void OnEnable() + { + if (EndlessLevelManager.instanceExists) + EndlessLevelManager.instance.Currency.currencyChanged += OnCurrencyChanged; + } + + /// <summary> + /// Unsubscribe from the level manager + /// </summary> + protected virtual void OnDisable() + { + if (EndlessLevelManager.instanceExists) + EndlessLevelManager.instance.Currency.currencyChanged -= OnCurrencyChanged; + } + + private void OnCurrencyChanged() + { + CheckCurrencyEnough(); + } + + public void CheckCurrencyEnough() + { + int result; + int.TryParse(cashText.text.ToString(), out result); + int current = EndlessLevelManager.instance.Currency.currentCurrency; + + if (current >= result) + cashText.color = new Color(1f, 1f, 1f); + else + cashText.color = new Color(0.5f, 0.5f, 0.5f); + } + + private void SetRed() + { + int result; + int.TryParse(cashText.text.ToString(), out result); + int current = EndlessLevelManager.instance.Currency.currentCurrency; + + if (current < result) + cashText.color = new Color(1f, 0f, 0f); } public void SetBuyBtnInfo(int x, int y, TowerPlacementGridEndless tpg) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs index 3ce7700..d465142 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs @@ -639,7 +639,6 @@ if (!isUpgradeTowerLevel && startTime >= JsonDataCenter.DOUBLE_GEM_TIME) { - EndlessGameUI.instance.UpgradeAllTowerMinLevel(1); EndlessRandomTower.instance.UpdateDescDisplay(); isUpgradeTowerLevel = true; } diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs index e07fefc..f45903b 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs @@ -3,6 +3,8 @@ using TMPro; using TowerDefense.Level; using UnityEngine; +using DG.Tweening; +using Core.Utilities; namespace TowerDefense.UI.HUD { @@ -19,6 +21,21 @@ protected Currency currency; private ParticleSystem goldGetPs;//金币获得动画 + + /// <summary> + /// 每秒增加的金币数量 + /// </summary> + private int addCurrencyPerSecond; + + private float duration; + + /// <summary> + /// 一秒前金币 + /// </summary> + private int lastCurrency; + + [SerializeField] + private GameObject addCurrencyPrefab; private void Start() { @@ -52,12 +69,33 @@ protected void UpdateDisplay() { int current = currency.currentCurrency; - //DisplayText.text = AddNumberSemi(current.ToString()); + int lastCurrency = currency.lastCurrency; DisplayText.text = current.ToString(); + if (lastCurrency > 0 && current - lastCurrency > 0) + ToBig().OnComplete(ToSmall); } - public void PlayGetGoldPS(){ + private Tweener ToBig() + { + return DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1.15f, 1.15f, 1.15f), + 0.15f); + } + + private void ToSmall() + { + DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1f, 1f, 1f), + 0.1f); + } + + public void PlayGetGoldPS() + { goldGetPs.Play(); } @@ -74,5 +112,51 @@ } return str; } + + private void Update() + { + FloatAddCurrency(); + } + + /// <summary> + /// 飘1s内增加的金币 + /// </summary> + private void FloatAddCurrency() + { + if (duration <= 0.0001f) + { + lastCurrency = currency.currentCurrency; + } + + duration += Time.deltaTime; + + if (duration >= 1f) + { + int add = currency.currentCurrency - lastCurrency; + + if (add > 0) + { + GameObject obj = Instantiate(addCurrencyPrefab); + obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false); + obj.transform.localPosition = new Vector3(148f, -30f, 0f); + obj.transform.localScale = new Vector3(0.66f, 0.66f, 0.66f); + TextMeshProUGUI textMeshProUGUI = obj.GetComponent<TextMeshProUGUI>(); + textMeshProUGUI.text = $"+{add}"; + + DOTween.To( + () => obj.transform.localPosition.y, + (float v) => + { + Vector3 pos = obj.transform.localPosition; + pos.y = v; + obj.transform.localPosition = pos; + }, + -20f, 0.2f); + Destroy(obj, 0.5f); + } + + duration = 0f; + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index c4d47cc..6bb10aa 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -144,7 +144,7 @@ /// </summary> protected TextMeshProUGUI towerPriceText; - protected bool tdBuyDisable = false; + public bool tdBuyDisable { get; protected set; } = false; /// <summary> /// 鼠标在移动一个Tower之前,要隐藏的Tower数据和指针。 @@ -1255,8 +1255,6 @@ else if (EndlessLevelManager.instanceExists && IsSubstitute(pointerInfo)) { CheckCanChangePos(pointerInfo); - if (EndlessUIStart.instance.GameStartTime >= JsonDataCenter.DOUBLE_GEM_TIME) - UpgradeAllTowerMinLevel(1); } // 当前是Skill塔位的状态. else if (bSkill) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs index 992292d..c45a17c 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs @@ -98,6 +98,7 @@ public void ChangeBtnClick() { randomBtn.onClick.RemoveAllListeners(); + randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); }); randomBtn.onClick.AddListener(() => { AudioSourceManager.Ins.Play(AudioEnum.UIDisable); @@ -222,6 +223,12 @@ return; } + if (EndlessGameUI.instance.tdBuyDisable) + { + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SetTowerGridOpenRed); + return; + } + AudioSourceManager.Ins.Play(AudioEnum.UI); Tower newTower = GetRandomTower(towerType, false); -- Gitblit v1.9.1