Unity Color型を16進数に変えたい [mr]
SpriteRendererとかが持っているColor型の情報を16進数に変えたい時がありました。
(要はColor(255.0f, 0.0f, 0.0f)を#FF0000みたいにしたかった。)
どうして、これをしたいシチュエーションに出会ったかというと、
Textのリッチテキストを利用して文字色を変えたかったからです。
そうなると、
<color=?>文字</color>
この?の部分は色の文字列か、16進数の値しか受け付けないので、
この需要が生まれました。
結果はとても簡単で、
Unityに含まれているクラスColorUtilityを利用するとすぐ解決しました。
1 2 3 4 5 |
// 適当にColor型の値を取得 Color color = gameObject.GetComponent<SpriteRenderer>().color; // Color型の値を16進数の文字列に string color16 = ColorUtility.ToHtmlStringRGB(color); |
他にも、アルファ値付きの16進数文字列にする ToHtmlStringRGBA関数や、
逆に16進数値からColor型に変換する TryParseHtmlString関数などもありました。
TryParseHtmlString関数に関してはTryとある通り、
実行結果が予期せぬ値になることがあるので注意ですね。
そして、冒頭に言ったやりたいことを実現したコードがこちらになります。
1 2 |
// 注意:カラーコードには#をつけること。 lable.text = "<color=#" + color16 + "> 色を変えたい文字列 </color>"; |
気になる点や、いや、これ違うやろ。ってところがありましたら、
気軽にコメントください。
至急、修正いたします。
mr
ディスカッション
コメント一覧
まだ、コメントがありません