【Unity入門】Colorクラスで色指定!オブジェやtextの色を変えよう

今回はマテリアルやtextの色を設定する時に使用するColorクラスについて見ていきたいと思います。どんなゲームで、オブジェクトやtextへ色を設定したりはしますよね?

シンプルながら、使用頻度は高いクラスです。パラメーターを全部覚える必要はありませんが、一通り使い方は確認しておきましょう!

  • [基本]Colorクラスとは?
  • [基本]一番基本的な使い方
  • [基本]【実践1】オブジェクトの色を変えてみよう!
  • [基本] 【実践2】textの色を変えてみよう!
  • [応用] いろいろなColorクラスの使い方!

前半で使い方を実例ベースで学び、後半で様々な色の指定方法を見てみましょうか。それではよろしくお願いいたします。

目次

Colorクラスとは?

一言でいうと「色のデータを保持・管理してくれるクラス」です。しかも保持だけではなく、主要な色は定数で用意してくれていたり、色の加工を行ってくれたりするわけです。非常にありがたいですね。

またデータの保持と言いましたがUnity上でのオブジェクトは、このColor型で色データを保持しています。

つまり好きな色のColor型データを作って、それを「オブジェクトが保持しているColor型データへ」投げ込めば、それだけでオブジェクトなどの色が変わるわけですね!

一番基本的な使い方

Colorクラスの一番簡単な使い方は、以下の通りです。

Color color = new Color(1.0f, 0.0f, 0.0f, 1.0f);

それぞれ引数は以下の通りです。

  • 第1引数・・・赤(0〜1)
  • 第2引数・・・青(0〜1)
  • 第3引数・・・緑(0〜1)
  • 第4引数・・・透明度(0〜1)

つまり今回の「new Color(1.0f, 0.0f, 0.0f, 1.0f);」は、ただの赤色を指しているわけですね!

またここで一つ注意点があります。透明度はオブジェクトの、デフォルトマテリアルの設定では利用されていません。ただ透明度の数字を下げても、オブジェクトは透明にはならないので気をつけましょう。

【実践1】オブジェクトの色を変えてみよう!

そしたらGetComponentでマテリアルを取得し、プログラム上で色を変えてしましょうか。以下のように丸いオブジェクトを用意して…

unity-color-1

Start関数の中でオブジェクトの色を変えるなら以下のように記述しましょう。

void Start () {
      // 現在使用されているマテリアルを取得
      Material mat = this.GetComponent<Renderer>().material;
      // マテリアルの色設定に赤色を設定
      mat.color = new Color(1.0f,0.0f,0.0f,1.0f);
}

これをオブジェクトにもたせて実行してみると…

unity-color-2
赤くなりましたね!

またオブジェクトの質感など、色以外の見た目を追求したい場合の詳細は、以下の記事にまとめてありますので確認してみてください。

それとGetComponentは非常に重要な関数です。理解が浅い人は以下のリンクから学んでおきましょう。

【実践2】textの色を変えてみよう!

まずは以下のリンクを参考に、Textを用意してしまいましょう。

unity-color-3

そうしたら、Textオブジェクトへスクリプトをもたせて、以下のように打ちましょう。

void Start () {
    // Textコンポーネントを取得
    Text text = this.GetComponent<Text>();
    // 色を指定
    text.color = new Color(1.0f, 0.0f, 0.0f, 1.0f);
}

そして実行すると…

unity-color-4

ちゃんと赤くなりましたね!

ここまでで以下の2点がわかったと思います。

  • ①オブジェクトもTextもColor型で色データを保持している
  • ②そのColro型データを上書きすることで色を変えることができる

これさえ覚えておけば、自在に色を操れますね!しっかり覚えておきましょう。

いろいろなColorクラスの使い方!

ここからはもう一歩踏み込んだColorクラスの使い方を見ていきましょう。

newで新規作成!

Color color = new Color(1.0f, 0.0f, 0.0f, 1.0f);

先ほど見た方法ですね!一番簡単な方法です。

16進数で新規作成!

webなどではよく16進数を使いますよね。16進数で色を指定したいこともあると思います。その場合は以下のようにしましょう。

string colorString = "#FF0000"; // 赤色の16進数文字列
Color newColor;
ColorUtility.TryParseHtmlString(colorString, out newColor); // 新しくColorを作成

「ColorUtility.TryParseHtmlString」関数の第二引数に入れたColor型の中に、新しいColorデータが入っています。

定数で指定

実はColorクラスには主な色は定数として用意されています。それを利用することで、以下のように簡単に色を設定できますよ!

Color newColor = Color.red; // 赤を生成

簡単ですね!色は以下が用意されています。

変数名RGBA
white白色(1, 1, 1, 1)
black黒色(0, 0, 0, 1)
gray灰色(0.5, 0.5, 0.5, 1)
greygrayの別名(0.5, 0.5, 0.5, 1)
red赤色(1, 0, 0, 1)
blue青色(0, 0, 1, 1)
yellow黄色(1, 0.92, 0.016, 1)
cyanシアン(0, 1, 1, 1)
magentaマゼンタ(1, 0, 1, 1)
greenソリッドグリーン(0, 1, 0, 1)
clearすべて0(0, 0, 0, 0)

まとめ

今回はUnityのColorクラスについて見てきました。

  • ①Unityでは色の指定や保持にColorクラスを用いていること。
  • ②そして、それを上書きすることで色変更を行えること。

その2点を覚えておきましょう。また定数や使い方を忘れてしまったら、このページを見に来て参考にしてください!

この記事を書いた人

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

目次