UNITY 中List.Sort的BUG

        List<int> lst = new List<int>();
        lst.Add(202);
        lst.Add(20);
        lst.Add(40);
        lst.Add(230);
        lst.Add(220);
        lst.Add(240);

        lst.Sort((m1, m2) =>
        {
            return m1 > m2 ? 1 : -1;
        });


如上这段排序代码,在VS2015控制台程序下运行,排序完全正确。

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

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

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

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

    void Start () {
        List<int> lst = new List<int>();
        lst.Add(202);
        lst.Add(20);
        lst.Add(40);
        lst.Add(230);
        lst.Add(220);
        lst.Add(240);

        lst.Sort((m1, m2) =>
        {
            if (m1 > m2)
                return 1;
            if (m1 < m2)
                return -1;
            return 0;

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


        });
    }

 

posted @ 2017-06-06 18:21  时空观察者9号  阅读(459)  评论(0编辑  收藏  举报