C# 为什么在unity编辑器窗口脚本中创建新的颜色实例时它';什么颜色不变?

C# 为什么在unity编辑器窗口脚本中创建新的颜色实例时它';什么颜色不变?,c#,unity3d,C#,Unity3d,这会将颜色更改为粉红色: void DrawItemBackgroundColor(Rect bgRect) { if (Event.current.type == EventType.Repaint) { Color oldColor = GUI.color; GUI.color = new Color(255, 182, 193);

这会将颜色更改为粉红色:

void DrawItemBackgroundColor(Rect bgRect)
        {
            if (Event.current.type == EventType.Repaint)
            {
                Color oldColor = GUI.color;
                GUI.color = new Color(255, 182, 193);

                var rect = bgRect;
                rect.height = Styles.headerBackground.fixedHeight;
                Styles.headerBackground.Draw(rect, false, false, false, false);

                rect.y += rect.height;
                rect.height = bgRect.height - rect.height;
                Styles.background.Draw(rect, false, false, false, false);

                GUI.color = oldColor;
            }
        }
但它什么也没做

但如果我在做:

GUI.color = new Color(255, 182, 193);

它会将其更改为红色。问题是颜色不是所有颜色,只有一些颜色。

解决方案是使用Color32:

GUI.color = Color.red; 
这条线的颜色为淡粉色:

void DrawItemBackgroundColor(Rect bgRect)
{
    if (Event.current.type == EventType.Repaint)
    {
        Color oldColor = GUI.color; 
        GUI.color = new Color32(255, 182, 193,100);

        var rect = bgRect;
        rect.height = Styles.headerBackground.fixedHeight;
        Styles.headerBackground.Draw(rect, false, false, false, false);

        rect.y += rect.height;
        rect.height = bgRect.height - rect.height;
        Styles.background.Draw(rect, false, false, false, false);

        GUI.color = oldColor;
    }
}
对于您的情况:

GUI.color = new Color32(255, 182, 193,100);
  • 颜色RGB值范围为0~1
  • Color32 RGB值范围为0~255

  • 因此,您可以按0~255使用Color32或按0~1使用Color GUI。
    GUI.color = new Color(255f/255f, 182f/255f, 193f/255f);