(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


Colorとカラーコードの相互変換【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
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に変換出来ません");
}