HitTargetNumber.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using DG.Tweening;
  6. /* 击中靶子时显示的分数 */
  7. public class HitTargetNumber : MonoBehaviour
  8. {
  9. void Awake()
  10. {
  11. DoText();
  12. }
  13. void DoText()
  14. {
  15. RectTransform rtf = this.transform.GetComponentInChildren<Text>().rectTransform;
  16. Sequence seq = DOTween.Sequence();
  17. float scale1 = rtf.localScale.x * 3.3f;
  18. float scale2 = rtf.localScale.x;
  19. rtf.localScale = Vector3.zero;
  20. seq.Append(rtf.DOScale(new Vector3(scale1, scale1, 0), 0.1f));
  21. seq.Append(rtf.DOScale(new Vector3(scale2, scale2, 0), 0.1f));
  22. seq.AppendInterval(1.88f);
  23. seq.Append(rtf.GetComponent<Text>().DOFade(0, 0.23f));
  24. seq.AppendCallback(delegate() {
  25. // 先停止所有相关的tweens
  26. DOTween.Kill(rtf);
  27. Destroy(this.gameObject);
  28. });
  29. }
  30. static List<GameObject> hitTargetNumber = new();
  31. public static void Create(float number) {
  32. if (number <= 0) return;
  33. if (number >= 9) {
  34. AudioMgr.ins.PlayRings();
  35. }
  36. //清空对象
  37. for (int i = hitTargetNumber.Count - 1; i >= 0; i--)
  38. {
  39. Destroy(hitTargetNumber[i].gameObject);
  40. hitTargetNumber.RemoveAt(i);
  41. }
  42. GameObject o = GameObject.Instantiate(
  43. Resources.Load<GameObject>(CommonConfig.StandaloneModeOrPlatformB? "Prefabs/Effects/HitTargetNumberPlatformB" : "Prefabs/Effects/HitTargetNumber"),
  44. Vector3.zero,
  45. Quaternion.identity,
  46. GameObject.Find("Canvas").transform
  47. );
  48. o.transform.localPosition = new Vector3(340, 180, 0);
  49. o.GetComponentInChildren<Text>().text = number.ToString($"f{CommonConfig.ringsPrecision}");
  50. hitTargetNumber.Add(o);
  51. }
  52. }