環境光の設定
既定の物体の色
オブジェクトの色は、描画時にオブジェクト自身の設定と環境光(ambient light)、及び照明(Light)の影響を受けて決定されます。オブジェクト自身の面(メッシュ)の色はマテリアル(material)と呼ばれる設定によって決定され、これはシェーダと呼ばれる GPU で処理するプログラムに関係します。マテリアルやシェーダはアセットとして追加できます。
エディタやコードから作成された立方体には Dufault-Diffuse と呼ばれる既定のマテリアルが設定されており、このマテリアルは単に白色で面を塗りつぶすだけの単純な固定色です。従って、Dufault-Diffuse が設定されている既定の物体をカメラで映すと、環境光がそのまま反映されます。
図1はエディタから生成した2つの立方体オブジェクトを既定の設定のまま映したゲーム画面です。この暗い立方体の色は、レンダラに設定されている環境光の色です。環境光は RendererSettings クラスの ambientLight プロパティから変更できます。
public static Color ambientLight { get; set; }
このプロパティに設定されている色が環境光として用いらます。例えば、環境光が赤い場合、白い物体は赤に見え、青い物体であれば紫色に見えるはずです。
using UnityEngine; public sealed class Sample : MonoBehaviour { void Start() { camera.transform.position = new Vector3(0, 0, -3); var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); RenderSettings.ambientLight = new Color(1, 0, 0); } }
コード1はスクリプトを実行すると、立方体オブジェクトを表示し、レンダラの環境光を赤色に変更します。「Scene」ウィンドウ上ではオブジェクトの色に変化はありませんが、レンダラによって描画された最終的なゲーム画面では、環境光の影響を受けて立方体が赤く描画されていることが確認できます。