版本:Unity 6 (6000.0)
语言英语
  • C#

ColorUtility.TryParseHtmlString

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的建议,但我们都会阅读用户提出的每一项建议,并在适用情况下进行更新。

关闭

提交失败

出于某种原因,您的建议更改无法提交。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static bool TryParseHtmlString(string htmlString, out Color color);

参数

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