はじめに
みなさんこんにちは! 今回はChatGPT君が滅茶苦茶使えるスクリプトを作成してくれたので、その紹介をします! Unityでゲームを開発している方は、是非活用してください!経緯
ゲーム開発中のある日、テキストの色を変える方法を探していました。(Unityの色指定について詳しく書かれている記事です)
Unityではオブジェクトの色を細かく変えたいとき、RGBAを指定して変えます。
new Color32(100, 100, 50, 1);
ただ、これだと4つも数値を指定しなくてはいけないのでめんどくさいです。
折角、Unity側が16進数のカラーコードを提供してくれているのに、16進数で色を指定することはできないようです・・・。
そこで、ChatGPTに「16進数で色を指定したい」と言ったところ以下のように回答してくれました。
ChatGPTの回答
「Unityでは、テキストの色を16進数で直接指定することはできませんが、RGB値を使用してカラーを指定することができます。RGB値は0から1の範囲で指定され、各色成分(赤、緑、青)はそれぞれの割合を示します。
しかし、16進数のカラーコードを使用することもできます。そのために、次のようなカスタム関数を使用して、16進数のカラーコードをUnityのColorオブジェクトに変換します。」
using UnityEngine;
public static class ColorExtensions
{
public static Color FromHex(string hex)
{
hex = hex.Replace("#", "");
byte r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
byte g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
byte b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
return new Color32(r, g, b, 255);
}
}
「これで、16進数のカラーコードを ColorExtensions.FromHex("#RRGGBB") のように使用して、UnityのColorオブジェクトに変換することができます。
例えば、"#FF0000" は赤、"#00FF00" は緑、"#0000FF" は青です。これらの値を使用して、次のようにテキストの色を設定できます。」
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
public Text text;
void Start()
{
text.color = ColorExtensions.FromHex("#FF0000"); // 赤色のテキスト
}
}
「このようにして、16進数のカラーコードを使用してUnityのテキストの色を指定することができます。」
このスクリプトを見たときの感想は「天才か?」でした。
このスクリプトのお陰で、16進数のカラーコードだけで色を指定できるため、作業効率が格段に向上しました。
しかもColorExtensions関数はstatic変数で宣言されているので、プロジェクトのどこでも使用することが可能です。
おわりに
いかがでしょうか?
ChatGPT君がこんなに使える関数を作ってくれるとは正直思っていませんでした。
また、static変数を駆使すればさらに使える機能を作れると思ったので、もっと勉強したいと思います・・・。
是非、Unityでゲーム作りをしている方は使ってみてください!