htmlString | 不区分大小写的 html 字符串,该字符串将转换为颜色。 |
color | 转换的颜色。 |
如果成功转换字符串,则为 bool True,否则为 false。
尝试转换 html 色彩字符串。
以“#”开头的字符串将以十六进制方式解析,如下所示
#RGB(变为 RRGGBB)
#RRGGBB
#RGBA(变为 RRGGBBAA)
#RRGGBBAA
如果没有指定,alpha 将默认为 FF。
不以“#”开头的字符串将解析为原色,支持以下颜色
红色、青色、蓝色、深蓝色、浅蓝色、紫色、黄色、酸橙色、紫红色、白色、银色、灰色、黑色、橙色、棕色、栗色、绿色、橄榄色、海军蓝、蓝绿色、水绿色、品红色..
以下示例创建了一个自定义属性抽屉,允许用户输入 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; }