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); }
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(); } }