using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; /* 击中靶子时显示的分数 */ public class HitTargetNumber : MonoBehaviour { void Awake() { DoText(); } void DoText() { RectTransform rtf = this.transform.GetComponentInChildren().rectTransform; Sequence seq = DOTween.Sequence(); float scale1 = rtf.localScale.x * 3.3f; float scale2 = rtf.localScale.x; rtf.localScale = Vector3.zero; seq.Append(rtf.DOScale(new Vector3(scale1, scale1, 0), 0.1f)); seq.Append(rtf.DOScale(new Vector3(scale2, scale2, 0), 0.1f)); seq.AppendInterval(1.88f); seq.Append(rtf.GetComponent().DOFade(0, 0.23f)); seq.AppendCallback(delegate() { // 先停止所有相关的tweens DOTween.Kill(rtf); Destroy(this.gameObject); }); } static List hitTargetNumber = new(); public static void Create(float number) { if (number <= 0) return; //清空对象 for (int i = hitTargetNumber.Count - 1; i >= 0; i--) { Destroy(hitTargetNumber[i].gameObject); hitTargetNumber.RemoveAt(i); } GameObject o = GameObject.Instantiate( Resources.Load("Prefabs/Effects/HitTargetNumber"), Vector3.zero, Quaternion.identity, GameObject.Find("Canvas").transform ); o.transform.localPosition = new Vector3(340, 180, 0); o.GetComponentInChildren().text = number.ToString($"f{CommonConfig.ringsPrecision}"); hitTargetNumber.Add(o); } }