WisdomSoft - for your serial experiences.

Unity における色の取り扱いについて説明します。スクリプトからは、主にカメラの背景色やマテリアルに対する色の設定で応用されます。

RGBAによる色の組み合わせ

他の一般的なグラフィックス API と同じように、Unity においても色は赤要素、緑要素、青要素の組み合わせによる加法混色で表現されます。加えて、アルファ要素による不透明度を設定できます。色情報を取引するには UnityEngine.Color 構造体を用います。

UnityEngine.Color 構造体
public struct Color

この構造体のコンストラクタはオーバーロードされており、各色要素の初期値を指定できます。

Color 構造体のコンストラクタ
public Color(float r, float g, float b)
public Color(float r, float g, float b, float a)

r パラメータには赤要素を、g パラメータには緑要素を、b パラメータには青要素を、a パラメータにはアルファ要素をそれぞれ指定します。

各要素はフィールドで公開されています。アルファ要素は a フィールド、赤要素は r フィールド、緑要素は g フィールド、青要素は b フィールドです。それぞれ、各要素名の英語表記である Alpha、Red、Green、Blue の頭文字を表しています。

Color 構造体 r フィールド
public float a
Color 構造体 g フィールド
public float r
Color 構造体 b フィールド
public float g
Color 構造体 a フィールド
public float b

これらのフィールドは 0.0 ~ 1.0 までの範囲で各色要素の強さを表します。赤要素、緑要素、青要素のすべてが 0.0 であれば完全な黒、1.0 であれば完全な白となります。

アルファ要素は不透明度を表し、1.0 で不透明、0.0 で透明を表します。アルファ要素が 0.5 であれば、背景の色と半分の割合で合成される半透明となるでしょう。

コード1
using UnityEngine;

public class Test : MonoBehaviour
{
	void Start()
	{
		Color red = new Color(1, 0, 0);
		Color white = new Color(1, 1, 1, 1);
		print("red=" + red);
		print("white=" + white);
	}
}
実行結果
コード1 実行結果

コード1では Color 構造体のコンストラクタのパラメータから各要素の初期値を指定し、赤色に相当する値を red 変数に、白色に相当する値を white 変数に格納しています。

上記の赤や白といった標準的な色は静的なプロパティから取得することもできます。わざわざコンストラクタから値を作るまでもなく red プロパティや white プロパティという名前で最初から用意されています。以下のコードは、コード1と同じ結果となるでしょう。

print("red=" + Color.red);
print("white=" + Color.white);

以下に、Color 構造体で事前に用意されている色を取得する静的プロパティの一覧を示します。

プロパティ名 得られる値 値に対応する色
red (1, 0, 0, 1)
green (0, 1, 0, 1)  
blue (0, 0, 1, 1)  
white (1, 1, 1, 1)  
black (0, 0, 0, 1)  
yellow (1, 0.922, 0.016, 1)  
cyan (0, 1, 1, 1)  
magenta (1, 0, 1, 1)  
gray, grey (0.5, 0.5, 0.5, 1)  
clear (0, 0, 0, 0) 透明

これらのプロパティは読み取り専用です。