【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
赤くなりましたね!

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

【Unity】色や画像で見栄えを変えよう!materialの簡単な使い方!
更新日 : 2018年12月18日

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

【Unity入門】コンポーネントを自在に操作!GetComponenの使い方!
更新日 : 2018年12月19日

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

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

【Unity入門】1分でTextを表示しよう!スコアの表示まで簡単解説!
更新日 : 2018年12月24日

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点を覚えておきましょう。また定数や使い方を忘れてしまったら、このページを見に来て参考にしてください!

プログラミング学習を効率良く進めたいなら…

学習を始めたけどエラーが解決できない
作りたいものはあるけど、何から始めればいいかわからない
プログラミングに対して、このような悩みを持っている方も多いですよね。

そんな方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI ENGINEER Plus+がおすすめです。



月額2980円(税別)で、主に4つのサービスを提供させていただきます。

  • 現役エンジニアによる月1度の「マンツーマン指導」
  • 平均回答時間30分の「Q&Aサービス」
  • 作りながら学べる28種類の「教材」
  • 学習を記録&仲間と共有できる「学習ログ」

目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにプログラミングの習得が可能です。

プログラミングを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI ENGINEER Plus+」をご利用ください。
まずは30日無料体験

書いた人

sato

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