c# - 如何在 Unity 中高效地对大量 RGB 颜色进行排序

标签 c# sorting unity3d colors

什么是对 Unity Colors 的一维数组进行排序的有效方法(它们是 RG?我有一个包含 921,600 个 Color 的数组>s(一张 1280 x 720 像素的图片)。是否有一种基数排序类型,或者您是否知道任何其他有效的方法来对这么多颜色进行排序? 通过排序,我的意思是说我有一些颜色,(123, 17, 2),(5, 16, 16),(5, 2, 150),等等。为了对这些进行排序,我先按 R 然后 G 然后 B 排序(有可能是这个的名称,但我不知道)所以排序的列表将是 (5, 2, 150), (5, 16, 16), (123, 17, 2)。

最佳答案

除了蛮力,我看不到任何其他方法。最好的方法是使用 Array.Sort<T>如评论部分所述。

创建这个排序方法:

    private int SortColors(Color a, Color b)
    {
        if (a.r < b.r)
            return 1;
        else if (a.r > b.r)
            return -1;
        else 
        {
            if (a.g < b.g)
                return 1;
            else if (a.g > b.g)
                return -1;
            else 
            {
                if (a.b < b.b)
                    return 1;
                else if (a.b > b.b)
                    return -1;
            }
        }

        return 0;
    }

然后像这样使用它:

Color[] colors = new Color[] { new Color (5, 2, 150), new Color (5, 16, 16), new Color (123, 17, 2) }; 
Array.Sort<Color> (colors, SortColors);

关于c# - 如何在 Unity 中高效地对大量 RGB 颜色进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37412371/

相关文章:

c# - "Cannot insert the value NULL into column "但我的专栏是 Nullable ... Entity Framework 5 asp.net MVC

c# - 按数字字段对列表进行排序并将值为 0 的对象放在底部的最佳方法是什么?

javascript - 在对对象数组进行排序时,是否可以使用 sort() 将已推到底部的项目进一步分组?

javascript - jQuery - 通过改变合并两个数组

unity3d - 在单个网格上渲染多种 Material

c# - 枚举指向游戏对象?

c# - 如何在 asp.net 中显示多系列柱形图

c# - 通用类型属性的任何替代解决方案?

c# - 从网络摄像头输入以编程方式更新 WPF 图像控件

git - .gitignore 整个目录名称中有空格