【Unity】カラーコードをColorに変換するTryParseHtmlString

  • URLをコピーしました!
目次

はじめに

Unityで色にこだわる場合、ウェブなどで使う「HTMLカラーコード」で扱う方が構造体の「Color」や「Color32」で扱うより、色見本などからコピペできて楽なので個人的におすすめです。

ユーティリティークラスでスタティックメソッドを用意して、どこからでも呼び出せるようにしたサンプルコードを紹介します。

ColorUtility.TryParseHtmlString

「HTMLカラーコード」を「Color」に変換してくれるメソッドはUnityが標準で用意してくれています。

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

boolを戻り値に持ち、文字列が正常に変換されれば「True」を返し、Colorを出力します。

あわせて読みたい
ColorUtility-TryParseHtmlString - Unity スクリプトリファレンス HTML カラー文字列に変換しようとします。

サンプルコード

public static class Util
{
    public static Color HexToRGB(string hex)
    {
        if(ColorUtility.TryParseHtmlString(hex,out Color color)) return color;
        else return Color.black;
    }
}

【解説】

UtilクラスはMonoBehaviourを継承しないStaticクラスです。シーンに配置する必要はありません。HexToRGB()は「HTMLカラーコード」の文字列を引数にして、Colorを返します。カラーコードが間違っていて正常に変換されない場合は黒を返します。

使い方

あらかじめ「HTMLカラーコード」を準備しておき、好きな箇所でHexToRGB()を呼び出すだけです。

using UnityEngine;
using UnityEngine.UI;

public class Temp : MonoBehaviour
{
    [SerializeField] Image[] img = new Image[5];
    readonly string offwhite = "E6E6E6";//オフホワイト(#がないのでエラーになる)
    readonly string satured = "#FF4040";//レッド 彩度落とし

    void Start()
    {
        SetColor();
    }

    void SetColor()
    {
        img[0].color = Util.HexToRGB(offwhite);
        img[1].color = Color.cyan;
        img[2].color = Color.green;
        img[3].color = Util.HexToRGB(satured);
        img[4].color = Color.yellow;
    }

}
変換に失敗したものは黒になっている

その他

逆に「Color」を「HTMLカラーコード」に変換するメソッドもあります。

あわせて読みたい
ColorUtility-ToHtmlStringRGBA - Unity スクリプトリファレンス 色を "RRGGBBAA" 形式で 16 進数文字列として返します。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次