UNITY 中List.Sort的BUG

时间:2023-05-22 23:06:41
        List<int> lst = new List<int>();
lst.Add();
lst.Add();
lst.Add();
lst.Add();
lst.Add();
lst.Add(); lst.Sort((m1, m2) =>
{
return m1 > m2 ? : -;
}); 如上这段排序代码,在VS2015控制台程序下运行,排序完全正确。

然而放在UNITY的Start()函数中运行,排序只排了前两个元素。

原因竟然是UNTIY 的BUG:排序函数必须返回 1,0,-1三种情况,只返回两种情况则排序不正确。

然而普通C#控制台程序是没有问题的,可见UNITY有多坑。

保证UNITY上排序正确的写法如下:

    void Start () {
List<int> lst = new List<int>();
lst.Add();
lst.Add();
lst.Add();
lst.Add();
lst.Add();
lst.Add(); lst.Sort((m1, m2) =>
{
if (m1 > m2)
return ;
if (m1 < m2)
return -;
return ;

         //return m1.CompareTo(m2); //或者这样写

        });
}