ColorUtility.TryParseHtmlString
Declaration
public static bool TryParseHtmlString(string htmlString, out Color color);Параметры
| Параметр | Описание |
|---|---|
| htmlString | HTML-строка, не учитывающая регистр, для преобразования в цвет. |
| цвет | Преобразованный цвет. |
Возвращаемое значение
логическое True, если строка была успешно преобразована, в противном случае false.
Описание
Попытка преобразовать строку цвета HTML.
Строки, начинающиеся с '#', будут анализироваться в шестнадцатеричной системе следующим образом:
#RGB (станет RRGGBB)
#RRGGBB
#RGBA (станет RRGGBBAA)
#RRGGBBAA
Когда не указано alpha, по умолчанию будет FF.
Строки, не начинающиеся с '#', будут анализироваться как буквальные цвета, со следующими поддерживаемыми:
red, cyan, blue, darkblue, lightblue, purple, yellow, lime, fuchsia, white, silver, grey, black, orange, brown, maroon, green, olive, navy, teal, aqua, magenta..
Следующий пример создает пользовательский PropertyDrawer, который позволяет пользователю вводить цвета html. Этот ящик свойств может быть показан в инспекторе, когда свойство цвета имеет атрибут ColorHtmlProperty.
наш пользовательский ящик свойств.
// This is not an editor script. using UnityEngine;
public class ColorHtmlPropertyAttribute : PropertyAttribute { }
// This is an editor script and should be placed in an 'Editor' directory. using UnityEngine; using UnityEditor;
[CustomPropertyDrawer(typeof(ColorHtmlPropertyAttribute))] public class ColorHtmlPropertyDrawer : PropertyDrawer { public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { Rect htmlField = new Rect(position.x, position.y, position.width - 100, position.height); Rect colorField = new Rect(position.x + htmlField.width, position.y, position.width - htmlField.width, position.height);
string htmlValue = EditorGUI.TextField(htmlField, label, "#" + ColorUtility.ToHtmlStringRGBA(property.colorValue));
Color newCol; if (ColorUtility.TryParseHtmlString(htmlValue, out newCol)) property.colorValue = newCol;
property.colorValue = EditorGUI.ColorField(colorField, property.colorValue); } }
// This shows how we would use the PropertyDrawer. using UnityEngine;
public class Example : MonoBehaviour { [ColorHtmlProperty] public Color htmlColor = Color.green;
public Color standardColor = Color.green; }