【unity】工具脚本--数组助手类

public static  class ArrayHelper
    {
        //7个方法 查找 所有满足条件的所有对象
        //排序【升序,降序】 最大值,最小值,筛选
        /// 
        /// 
        /// 
        /// 类型
        /// 数组
        /// 委托方法
        /// 
        public static T Find(this T[] array,Func condition)
        {
            for (int i = 0; i < array.Length; i++)
            {
                if (condition(array[i]))
                {
                    return array[i];
                }
            }
            return default(T);
        }

        //查找所有满足条件的数组元素
        //找敌人  血量大于79的敌人

        public static T[] FindAll(this T[] array,Func condition)
        {
            List list = new List();
            for (int i = 0; i < array.Length; i++)
            {
                //if(array[i]>79)
                if (condition(array[i]))
                {
                    list.Add(array[i]);
                }
            }
            return list.ToArray();
        }

        /// 
        /// 最大值
        /// 
        /// 代表数组数组类型
        /// 比较条件的返回值类型
        /// 比较的数组
        /// 比较的方法
        /// 
        public static T GetMax
            (this T[] array,Func condition) where Q:IComparable
        {
            if (array.Length == 0)
                return default;
            T maxIndex = array[0];
            for (int i = 0; i < array.Length; i++)
            {
                //if(array[i]>maxIndex)
                if (condition(maxIndex).
                        CompareTo(
                            condition(array[i])) < 0)
                {
                    maxIndex = array[i];
                }
            }
            return maxIndex;
        }

        //最小值
        public static T GetMin
            (this T[] array, Func condition) where Q : IComparable
        {
            if (array.Length == 0)
                return default;
            T minIndex = array[0];
            for (int i = 0; i < array.Length; i++)
            {
                //if(array[i]>maxIndex)
                if (condition(minIndex).
                        CompareTo(
                            condition(array[i])) > 0)
                {
                    minIndex = array[i];
                }
            }
            return minIndex;
        }
        //升序
        public static void Order_ascending(this T[] array,Func condition) where Q:IComparable
        {
            for (int i = 0; i < array.Length; i++) //每一次循环都会把最大值移到最后
            {
                for (int j = 0; j < array.Length-i-1; j++)
                {
                    if (condition(array[j]).CompareTo(condition(array[j+1]))>0)
                    {
                        T temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }

        }

        //降序
        public static void Order_descending(this T[] array, Func condition) where Q : IComparable
        {
            for (int i = 0; i < array.Length; i++) //每一次循环都会把最大值移到最后
            {
                for (int j = 0; j < array.Length - i - 1; j++)
                {
                    if (condition(array[j]).CompareTo(condition(array[j + 1])) < 0)
                    {
                        T temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }

        }

        //筛选  从T[]中筛选Q[]
        public static Q[] Select(this T[] array,Func condition)
        {
            Q[] result = new Q[array.Length];
            for (int i = 0; i < array.Length; i++)
            {
                result[i] = condition(array[i]);
            }
            return result;
        }

        

        

    }

你可能感兴趣的:(unity,游戏引擎)