using System.Collections.Generic; using Godot; /// <summary> /// 常用函数工具类 /// </summary> public static class Utils { /// <summary> /// 返回随机 boolean 值 /// </summary> public static bool RandBoolean() { return GD.Randf() >= 0.5f; } /// <summary> /// 返回一个区间内的随机小数 /// </summary> public static float RandfRange(float min, float max) { if (min == max) return min; if (min > max) return GD.Randf() * (min - max) + max; return GD.Randf() * (max - min) + min; } /// <summary> /// 返回一个区间内的随机整数 /// </summary> public static int RandRangeInt(int min, int max) { if (min == max) return min; if (min > max) return Mathf.FloorToInt(GD.Randf() * (min - max + 1) + max); return Mathf.FloorToInt(GD.Randf() * (max - min + 1) + min); } /// <summary> /// 随机返回其中一个参数 /// </summary> public static T RandChoose<T>(params T[] list) { if (list.Length == 0) { return default; } return list[RandRangeInt(0, list.Length - 1)]; } /// <summary> /// 随机返回集合中的一个元素 /// </summary> public static T RandChoose<T>(List<T> list) { if (list.Count == 0) { return default; } return list[RandRangeInt(0, list.Count - 1)]; } public static Rect2 CalcRect(float start1, float end1, float start2, float end2) { return new Rect2( Mathf.Min(start1, start2), Mathf.Min(end1, end2), Mathf.Abs(start1 - start2), Mathf.Abs(end1 - end2) ); } }