From 5a6c38d44d9229531b6823c3d5924c0fb3d84ceb Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 25 Aug 2022 21:15:31 +0800 Subject: [PATCH] fix(TextDeltaNumber): make it closer to delte number --- Assets/JCSUnity/Scripts/UI/JCS_DeltaNumber.cs | 13 +-- .../Scripts/UI/JCS_TextDeltaNumber.cs | 85 ++++++++++++++----- .../ScriptReference/UI/JCS_TextDeltaNumber.md | 4 + 3 files changed, 73 insertions(+), 29 deletions(-) diff --git a/Assets/JCSUnity/Scripts/UI/JCS_DeltaNumber.cs b/Assets/JCSUnity/Scripts/UI/JCS_DeltaNumber.cs index 9538981e..757acd69 100644 --- a/Assets/JCSUnity/Scripts/UI/JCS_DeltaNumber.cs +++ b/Assets/JCSUnity/Scripts/UI/JCS_DeltaNumber.cs @@ -116,7 +116,7 @@ public class JCS_DeltaNumber : MonoBehaviour [SerializeField] private JCS_TextAlign mTextAlign = JCS_TextAlign.RIGHT; - [Header("- Min/Max Settings (JCS_DeltaNumber)")] + [Header("- Min/Max (JCS_DeltaNumber)")] [Tooltip("Maxinum number.")] [SerializeField] @@ -126,13 +126,13 @@ public class JCS_DeltaNumber : MonoBehaviour [SerializeField] private int mMinNumber = 0; - [Header("- Delta Animation Settings (JCS_DeltaNumber)")] + [Header("- Animation (JCS_DeltaNumber)")] [Tooltip(@"This will make the number have the transition between, setting to a new number. If you want the number set directly, you should disable this effect for best purpose.")] [SerializeField] - private bool mDeltaToCurrentNumber = false; + private bool mDeltaToCurrentNumber = true; [Tooltip("Toward to this number, if mDeltaToCurrentScore active.")] [SerializeField] @@ -147,7 +147,8 @@ public class JCS_DeltaNumber : MonoBehaviour private float mAnimNumberTimer = 0; [Tooltip("How much the delta value add up.")] - [SerializeField] [Range(1, 1000)] + [SerializeField] + [Range(1, 1000)] private int mDeltaProduct = 1; /* Setter & Getter */ @@ -192,14 +193,14 @@ private void Awake() private void Update() { -#if (UNITY_EDITOR) +#if UNITY_EDITOR Test(); #endif DoDeltaCurrentNumber(); } -#if (UNITY_EDITOR) +#if UNITY_EDITOR private void Test() { if (!mTestWithKey) diff --git a/Assets/JCSUnity/Scripts/UI/JCS_TextDeltaNumber.cs b/Assets/JCSUnity/Scripts/UI/JCS_TextDeltaNumber.cs index 6d19e4c5..9923dd69 100644 --- a/Assets/JCSUnity/Scripts/UI/JCS_TextDeltaNumber.cs +++ b/Assets/JCSUnity/Scripts/UI/JCS_TextDeltaNumber.cs @@ -11,6 +11,7 @@ */ #define TMP_PRO +using System; using UnityEngine; using UnityEngine.UI; @@ -54,18 +55,10 @@ public class JCS_TextDeltaNumber : MonoBehaviour [Header("** Check Variables (JCS_TextDeltaNumber) **")] - [Tooltip("Flag to check if is currently effecting.")] - [SerializeField] - private bool mActive = false; - [Tooltip("Full string to display.")] [SerializeField] private string mFullString = ""; - [Tooltip("Target number to display, or to delta to.")] - [SerializeField] - private float mTargetNumber = 0.0f; - [Header("** Initialize Variables (JCS_TextDeltaNumber) **")] [Tooltip("Target text renderer.")] @@ -99,7 +92,29 @@ public class JCS_TextDeltaNumber : MonoBehaviour [Tooltip("Place you want to round the decimal.")] [SerializeField] [Range(0, 15)] - private int mRoundPlace = 2; + private int mRoundPlace = 0; + + [Header("- Min/Max (JCS_TextDeltaNumber)")] + + [Tooltip("Maxinum number.")] + [SerializeField] + private int mMaxNumber = 999; + + [Tooltip("Mininum number.")] + [SerializeField] + private int mMinNumber = 0; + + [Header("- Animation (JCS_TextDeltaNumber)")] + + [Tooltip(@"This will make the number have the transition +between, setting to a new number. If you want the number set directly, you +should disable this effect for best purpose.")] + [SerializeField] + private bool mDeltaToCurrentNumber = true; + + [Tooltip("Target number to display, or to delta to.")] + [SerializeField] + private float mTargetNumber = 0.0f; [Tooltip("How fast the number animate.")] [SerializeField] @@ -115,12 +130,23 @@ public class JCS_TextDeltaNumber : MonoBehaviour /* Setter/Getter */ - public bool Active { get { return this.mActive; } } - public float TargetNumber { get { return this.mTargetNumber; } } public Text TextContainer { get { return this.mTextContainer; } set { this.mTextContainer = value; } } #if TMP_PRO public TextMeshPro TextMesh { get { return this.mTextMesh; } set { this.mTextMesh = value; } } #endif + public bool DeltaToCurrentNumber { get { return this.mDeltaToCurrentNumber; } set { this.mDeltaToCurrentNumber = value; } } + public float TargetNumber + { + get { return this.mTargetNumber; } + set + { + this.mTargetNumber = value; + + // by setting the delta number will enable the delta to current + // number effect. + this.mDeltaToCurrentNumber = true; + } + } public string FullString { get { return this.mFullString; } } public int RoundPlace { get { return this.mRoundPlace; } set { this.mRoundPlace = value; } } public float CurrentNumber { get { return this.mCurrentNumber; } set { this.mCurrentNumber = value; } } @@ -153,21 +179,37 @@ private void TestInput() } #endif + /// + /// Update the number GUI. + /// + public void UpdateNumber() + { + UpdateNumber(mCurrentNumber); + } + /// /// Start the text delta number. /// - /// Number target to delt to. + /// Number target to delt to. /// Set the number directly. - public void UpdateNumber(float targetNumber, bool anime = true) + public void UpdateNumber(float number, bool anime = false) { - this.mTargetNumber = targetNumber; + float targetNumber = number; + + if (targetNumber < mMinNumber) + targetNumber = mMinNumber; + else if (targetNumber > mMaxNumber) + targetNumber = mMaxNumber; - if (anime) - mActive = true; + if (mDeltaToCurrentNumber) + { + if (!anime) + mTargetNumber = targetNumber; + } else { - mActive = false; // To ensure, just deactive it. - this.mCurrentNumber = targetNumber; + // apply to current number + mCurrentNumber = targetNumber; } } @@ -176,14 +218,11 @@ public void UpdateNumber(float targetNumber, bool anime = true) /// private void DoDeltaCurrentNumber() { - if (!mActive) + if (!mDeltaToCurrentNumber) return; - if (System.Math.Round(mTargetNumber, mRoundPlace) == System.Math.Round(mCurrentNumber, mRoundPlace)) - { - mActive = false; + if (Math.Round(mTargetNumber, mRoundPlace) == Math.Round(mCurrentNumber, mRoundPlace)) return; - } mAnimNumberTimer += Time.deltaTime; diff --git a/docs/ScriptReference/UI/JCS_TextDeltaNumber.md b/docs/ScriptReference/UI/JCS_TextDeltaNumber.md index a0ccf918..3b5ddb73 100644 --- a/docs/ScriptReference/UI/JCS_TextDeltaNumber.md +++ b/docs/ScriptReference/UI/JCS_TextDeltaNumber.md @@ -13,6 +13,10 @@ Like `JCS_DeltaNumber`, but instead of altering the sprite we alter text instead | mPreString | String added before rendering the number." | | mPostString | String added after rendering the number. | | mRoundPlace | Place you want to round the decimal. | +| mMaxNumber | Maxinum number. | +| mMinNumber | Mininum number. | +| mDeltaToCurrentNumber | Show each digit between the number animation. | +| mTargetNumber | Current targeting number. | | mAnimNumberTime | How fast the number animate. | | mDeltaProduct | How much the delta value add up. |