この記事でのバージョン
Unity 2021.3.1f1
はじめに
UnityはColorという構造体で色(RGBA)を表現出来ますが、
[SerializeField]
private Color _color = Color.red;
その一方でテキストの一部だけの色を変えたいみたいな時はカラーコードを使います。
//_textはTextMeshProUGUI _text.text = "<color=#ff0000>New</color> Text";
と言う事で今回はColorとカラーコードを相互に変換する方法の紹介です!
Color → カラーコード
まずはColorをカラーコードに変換する方法ですが、
ColorUtilityというクラスのToHtmlStringRGBもしくはToHtmlStringRGBAを使うだけ。
Color color = Color.red; string colorCode = ColorUtility.ToHtmlStringRGB(color); Debug.Log($"Color.redのカラーコード : {colorCode}");
カラーコード → Color
次にカラーコードをColorに変換する方法ですが、
こちらもColorUtilityというクラスのTryParseHtmlStringを使うだけ。
ただし、Colorに変換出来ない文字列を入力する事も出来てしまうため、
Colorはoutで受け取り、返り値で変換出来たかのboolを受け取る感じになります。
var colorCode = "#FF0000"; Color color; if (ColorUtility.TryParseHtmlString(colorCode, out color)) { //変換成功 Debug.Log($"カラーコード : {colorCode}はColorに変換すると{color.ToString()}"); } else{ //変換失敗 Debug.LogError($"{colorCode}はColorに変換出来ません"); }