示例#1
0
        public static void ColorValue(string label,
                                      Color color,
                                      Color reset,
                                      UI_ColorInfo.UpdateColor onChanged,
                                      bool simplePicker          = false,
                                      bool simplePickerShowAlpha = true,
                                      bool simplePickerHSV       = false)

        {
            ColorValue(label, color, reset, "", onChanged, simplePicker, simplePickerShowAlpha, simplePickerHSV);
        }
示例#2
0
        public static void ColorValue(string label,
                                      Color color,
                                      UI_ColorInfo.UpdateColor onChanged,
                                      bool simplePicker          = false,
                                      bool simplePickerShowAlpha = true,
                                      bool simplePickerHSV       = false)
        {
            if (simplePicker == false)
            {
                GUILayout.BeginHorizontal();
                if (label != null)
                {
                    GUILayout.Label(label, GUILayout.ExpandWidth(false));
                }
                if (GUILayout.Button(GUIContent.none, GUILayout.Height(60f)))
                {
                    if (Studio.Studio.Instance.colorMenu.updateColorFunc == onChanged)
                    {
                        Studio.Studio.Instance.colorPaletteCtrl.visible = !Studio.Studio.Instance.colorPaletteCtrl.visible;
                    }
                    else
                    {
                        Studio.Studio.Instance.colorPaletteCtrl.visible = true;
                    }
                    if (Studio.Studio.Instance.colorPaletteCtrl.visible)
                    {
                        Studio.Studio.Instance.colorMenu.updateColorFunc = onChanged;
                        Studio.Studio.Instance.colorMenu.SetColor(color, UI_ColorInfo.ControlType.PresetsSample);
                    }
                }
                Rect layoutRectangle = GUILayoutUtility.GetLastRect();
                layoutRectangle.xMin += 6;
                layoutRectangle.xMax -= 6;
                layoutRectangle.yMin += 6;
                layoutRectangle.yMax -= 6;
                _simpleTexture.SetPixel(0, 0, color);
                _simpleTexture.Apply(false);
                GUI.DrawTexture(layoutRectangle, _simpleTexture, ScaleMode.StretchToFill, true);
                GUILayout.EndHorizontal();
            }
            else
            {
                GUILayout.BeginVertical();
                if (label != null)
                {
                    GUILayout.Label(label, GUILayout.ExpandWidth(false));
                }

                Color newColor = color;
                if (simplePickerHSV)
                {
                    Color.RGBToHSV(newColor, out float h, out float s, out float v);
                    h *= 360;

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("H", GUILayout.ExpandWidth(false));
                    h = GUILayout.HorizontalSlider(h, 0f, 359.99f);
                    if (float.TryParse(GUILayout.TextField(h.ToString("0.0"), GUILayout.Width(50)), out float newValue))
                    {
                        h = newValue;
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("S", GUILayout.ExpandWidth(false));
                    s = GUILayout.HorizontalSlider(s, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(s.ToString("0.000"), GUILayout.Width(50)), out newValue))
                    {
                        s = newValue;
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("V", GUILayout.ExpandWidth(false));
                    v = GUILayout.HorizontalSlider(v, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(v.ToString("0.000"), GUILayout.Width(50)), out newValue))
                    {
                        v = newValue;
                    }
                    GUILayout.EndHorizontal();

                    newColor   = Color.HSVToRGB(Mathf.Clamp01(h / 360), Mathf.Clamp01(s), v);
                    newColor.a = color.a;
                }
                else
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("R", GUILayout.ExpandWidth(false));
                    newColor.r = GUILayout.HorizontalSlider(newColor.r, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(newColor.r.ToString("0.000"), GUILayout.Width(50)), out float newValue))
                    {
                        newColor.r = newValue;
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("G", GUILayout.ExpandWidth(false));
                    newColor.g = GUILayout.HorizontalSlider(newColor.g, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(newColor.g.ToString("0.000"), GUILayout.Width(50)), out newValue))
                    {
                        newColor.g = newValue;
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("B", GUILayout.ExpandWidth(false));
                    newColor.b = GUILayout.HorizontalSlider(newColor.b, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(newColor.b.ToString("0.000"), GUILayout.Width(50)), out newValue))
                    {
                        newColor.b = newValue;
                    }
                    GUILayout.EndHorizontal();
                }

                if (simplePickerShowAlpha)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("A", GUILayout.ExpandWidth(false));
                    newColor.a = GUILayout.HorizontalSlider(newColor.a, 0f, 1f);
                    if (float.TryParse(GUILayout.TextField(newColor.a.ToString("0.000"), GUILayout.Width(50)), out float newValue))
                    {
                        newColor.a = newValue;
                    }
                    GUILayout.EndHorizontal();
                }

                GUILayout.Box("", GUILayout.Height(40));
                _simpleTexture.SetPixel(0, 0, color);
                _simpleTexture.Apply(false);
                GUI.DrawTexture(GUILayoutUtility.GetLastRect(), _simpleTexture, ScaleMode.StretchToFill, true);

                if (color != newColor)
                {
                    onChanged(newColor);
                }
                GUILayout.EndVertical();
            }
        }