using System; using System.Threading.Tasks; using UnityEngine; namespace AibisDream.Utility { public static class CommonUtil { private const float Epsilon = 1e-5f; private static Camera _mainCam; /// /// 判断为0 /// /// 浮点数 /// 是否为0 public static bool IsZero(float value) { // 如果value小于epsilon,则认为它等于0 return Mathf.Abs(value) < Epsilon; } /// /// 判断浮点数是否相等 /// /// value1 /// value2 /// 是否相等 public static bool IsEqual(float value1, float value2) { return Mathf.Abs(value1 - value2) < Epsilon; } /// /// 简单延时实现 /// /// 延时 /// 函数 public static async Task Delay(int delayTime, Action action) { await Task.Delay(delayTime); action?.Invoke(); } /// /// 受限数值 /// /// 目标数 /// 上限 /// 下限 /// 结果 public static float Limit(float target, float max, float min) { if (target <= min) { return min; } if (target >= max) { return max; } return target; } /// /// 获取鼠标在世界中的位置 /// /// 鼠标界面位置 /// 物体形状 /// 世界位置 public static Vector3 GetMouseWorldPos(Vector3 mousePoint, Transform transform) { if (!_mainCam) _mainCam = Camera.main; mousePoint.z = _mainCam.WorldToScreenPoint(transform.position).z; return _mainCam.ScreenToWorldPoint(mousePoint); } } }