using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using DG.Tweening.Core; public static class BattleUtility { // 其他通用的战斗工具方法可以放在这里 public static TweenerCore MoveToTarget(RectTransform transform, RectTransform target, Vector2 offset, float duration, Action onComplete = null) { Vector3 targetWorldPos = target.TransformPoint(target.anchoredPosition + offset); RectTransform parentRect = transform.parent as RectTransform; Vector2 targetAnchoredPos; RectTransformUtility.ScreenPointToLocalPointInRectangle( parentRect, RectTransformUtility.WorldToScreenPoint(null, targetWorldPos), null, out targetAnchoredPos); // 3. DOTween 移动 return transform.DOAnchorPos(targetAnchoredPos, duration) .SetEase(Ease.Linear) .OnComplete(() => onComplete?.Invoke()); } public static string DisplayDamageNum(long num, int attackType) { var basePowerStr = UIHelper.ReplaceLargeArtNum(num); var result = string.Empty; for (int i = 0; i < basePowerStr.Length; i++) { var numChar = (char)GetDamageNumKey((DamageType)attackType, basePowerStr[i]); if (numChar > 0) { result += numChar; } } return result; } public static int GetDamageNumKey(DamageType damageType, int _num) { var config = DamageNumConfig.Get(damageType.ToString()); //.的ASCII码是46 if (_num == 46) { return config.nums[10]; } //k的ASCII码是107 else if (_num == 107) { return config.nums[11]; } //m的ASCII码是109 else if (_num == 109) { return config.nums[12]; } //b的ASCII码是98 else if (_num == 98) { return config.nums[13]; } //t的ASCII码是116 else if (_num == 116) { return config.nums[14]; } return config.nums[_num - 48]; } }