この記事について

この記事では、Unityで使用できるLight(ライト)の種類と使い方を解説します。ライトはゲーム内の雰囲気や見え方を大きく左右する要素で、種類や設定によって影の出方やパフォーマンスが変わります。
Directional・Point・Spot・Areaの違いから、明るさを変えるIntensity、Baked・Mixed・Realtimeの使い分け、ベイクと光らないときの確認点までまとめました。

基本の3D Lightを対象に、Unity 6.0の公式資料をもとに説明しています。主にBuilt-inとURPの3D描画を扱い、HDRPとの違いは必要な箇所で補足します。
画像は元記事のURP作例を再利用しており、撮影時のUnityバージョンは未確認です。使用環境によって項目名・配置が異なることがあります。

この記事でわかること

  • UnityのLightの種類(Directional / Point / Spot / Area)の違いと使い分け
  • Intensity・Range・影の基本設定
  • Lightのモード(Realtime / Mixed / Baked)とベイクの手順
  • ライトが光らない・影が出ないときの確認点
  • パフォーマンスを意識したライティング調整

UnityのLightとは?

UnityのLightは、シーン内のオブジェクトを照らし、陰影を作り出すコンポーネントです。実際のゲームでは、単に明るさを確保するだけでなく、臨場感や雰囲気を演出する役割も持っています。

まずは「Typeは光の形、Modeは光を計算する方法」と分けると理解しやすいです。Pointだから必ずRealtime、Directionalだから必ずBaked、という決まりではありません。

UnityにおけるLightの種類と役割

基本となる3Dライトは、次の4種類です。それぞれの特徴と用途を理解して使い分けましょう。
※Area Lightは面から光を出す3Dライトです。URPの2D Rendererで使用するLight 2Dとは別の機能です。

UnityのLightで選べるDirectional・Point・Spot・Areaの種類

Directional
光の当たり方:同じ方向から平行な光を当てる
主な用途:太陽光・月明かり

Point
光の当たり方:一点から周囲へ光を放つ
主な用途:ランプ・電球・街灯

Spot
光の当たり方:向けた方向へ円錐状に光を当てる
主な用途:懐中電灯・ステージ照明

Area
光の当たり方:長方形や円などの面から光を放つ
主な用途:窓・面照明・柔らかい光

Areaの対応モードには違いがあります。Built-in・URPの基本的な使い方ではベイクして利用しますが、HDRPにはリアルタイムで使えるAreaもあります。詳しくは後のArea Lightの項目で確認してください。

Lightのモード:Realtime・Mixed・Bakedの違い

Realtime
計算方法:実行中に直接光や影を計算する
向いている用途:移動・点滅するライト、動く物体の照明

Mixed
計算方法:ベイクとリアルタイムの照明を組み合わせる
向いている用途:固定した光源と、動くキャラを両方扱う場面

Baked
計算方法:光や影を事前計算し、ライトマップなどに記録する
向いている用途:光源や形が変わらない背景

Bakedは実行中のライト・影の計算を減らせますが、ライトマップの描画やメモリのコストは残ります。また、Mixedの挙動はLightingウィンドウのLighting Modeによって変わります。「静的な物体はすべてベイク、動的な物体だけリアルタイム」と一律には分けられません。

迷ったときの選び方

  • 移動・点滅など、実行中に光を変えるならRealtimeを基本にする
  • 固定した照明でも、動くキャラへの光や影が必要ならMixed・Realtimeを検討する
  • 動かない背景の照明を事前計算したいならBakedを検討する

Mixedのライトを実行中に動かしたり色を変えたりしても、ベイク済みの光はその変更に追従しません。光源が動く演出では、このずれに注意してください。

各ライトの基本設定とポイント

Directional Light(太陽光)

Directional Lightは、太陽のように遠くから同じ方向の光が届く状態を表します。ライトの位置を動かすより、Rotationで光の向きを調整するのがポイントです。

  • Rotation:光の方向と影の伸びる向きを変える
  • Color / Intensity:光の色と強さを変える
  • Shadow Type:影を使わないか、Hard・Softの影を使うか選ぶ
  • Mode:太陽が固定でも、動くキャラの照明や影が必要かを考えて選ぶ

夕方らしい演出では、角度だけでなく光の色や空・環境光も合わせて調整します。Rotationを変えるだけで、空の色や時刻が自動的に切り替わるわけではありません。

Directional Lightの設定を確認するUnityの画面

上の画像はURPでModeをBakedにした設定例です。これ以降のPoint・Spotの画像もBakedの例ですが、用途に合わせてモードを選んでください。

Point Light(点光源)

Point Lightは、電球のように一点から周囲へ光を放ちます。置いた位置を中心に照らすので、ランプや街灯の表現に向いています。

  • Range:光が届く範囲を調整する
  • Intensity:光の強さを調整する
  • Mode:固定照明は用途に合わせて選び、移動・点滅する光はRealtimeを基本にする

Rangeの端では光が弱くなります。床や壁が範囲の端にあると光が見えにくいため、照らしたい面が十分に範囲内へ入るように調整しましょう。

Point Lightの設定を確認するUnityの画面

Spot Light(スポットライト)

Spot Lightは、懐中電灯のように特定の方向を円錐状に照らすライトです。Positionに加えてRotationも確認します。

  • Spot Angle:光の広がりを調整する。URPなどではInner / Outer Spot Angleが表示される
  • Range / Intensity:光の届く距離と強さを調整する
  • 用途:ステージ照明、懐中電灯、車のヘッドライトなど

「明るさを上げても光らない」ときは、ライトが対象と反対方向を向いていないか、円錐の範囲から外れていないかを先に確認してください。

Spot Lightの設定を確認するUnityの画面

Area Light(面光源)の使い方

Area Lightは、長方形や円などの面から光を出します。窓から入る光や、広い照明器具による柔らかい光を表現したいときに便利です。

  • Built-in・URP:この記事の手順ではBakedとして使い、ライトマップを生成する
  • HDRP:形状で対応モードが異なる。HDRP 17ではRectangleはリアルタイムにも対応し、TubeはRealtime専用、DiscはBaked専用
  • 大きさ・向き:面のサイズと照射方向を調整して、光の広がりや影の見え方を確認する

URPでAreaを追加しただけでは、ほかのRealtimeライトのように結果が表示されないことがあります。Modeとベイク設定を確認し、後述の手順でGenerate Lightingを実行してください。

Area Lightの設定を確認するUnityの画面

画像の「Area (baked only)」は、掲載しているURP環境での表示です。HDRPを含むすべての環境でAreaがベイク専用という意味ではありません。

Lightの追加方法と明るさ・影の設定

  1. Hierarchyを右クリックし、「Light」から種類を選ぶ。最初はDirectional・Point・Spotのいずれかを試す
  2. 対象を照らせる位置・向きへ調整する。Point・SpotではRangeも確認する
  3. InspectorのColorとIntensityを調整する。まずRealtimeで光の変化を確認するとわかりやすい
  4. 影を出す場合はLightのShadow Typeと、オブジェクト側の影の設定を確認する
  5. Sceneビューだけでなく、Gameビューでも実際のカメラからの見え方を確認する

すでにある初期ライトを編集してもOKです。明るすぎる場合はライトを増やす前に、ほかのライトや環境光、露出設定の影響も確認しましょう。
画面や操作の名前がわからない場合は、Unityエディタの画面構成と基本操作も参考にしてください。

Intensityとは?光の強さを調整する

Intensityはライトの強さを変える値です。同じ環境なら値を大きくすると強くなりますが、見た目の明るさはColor、マテリアル、距離、露出などにも左右されます。HDRPでは物理的な単位も使うため、違うパイプラインの数値をそのまま比較しないようにしましょう。

次はBuilt-in・URPのRealtimeライトでIntensityを変える短い例です。LightIntensityExample.csを作成し、対象ライトへアタッチしてください。追加したLightIntensityExampleコンポーネントのIntensityを設定して再生すると、Startで反映されます。

using UnityEngine;

[RequireComponent(typeof(Light))]
public class LightIntensityExample : MonoBehaviour
{
    [SerializeField, Min(0f)] private float intensity = 1f;

    private void Start()
    {
        SetIntensity(intensity);
    }

    public void SetIntensity(float value)
    {
        GetComponent<Light>().intensity = Mathf.Max(0f, value);
    }
}

再生中に別の処理から明るさを変えるときは、SetIntensityを呼び出します。Bakedのライトを同じように変更しても、ベイク済みの結果は更新されません。HDRPでは追加のライトデータや単位を扱うため、この例を全パイプライン共通の手順として使わないでください。

Bakedのライトをベイクする基本手順

ここではUnity 6.0の基本的なライトマップ手順を紹介します。LightのModeをBakedに変えるだけでなく、照らされる側の設定とライティングの生成が必要です。

  1. LightのModeをBakedにする
  2. 動かさない床・壁などのMesh RendererでContribute Global Illuminationを有効にし、Receive Global IlluminationをLightmapsにする
  3. 読み込んだモデルにはライトマップ用UVを用意する。必要に応じてモデルのImport SettingsでGenerate Lightmap UVsを使う
  4. 「Window → Rendering → Lighting」を開く。必要ならNew Lighting Settingsで設定アセットを作る
  5. Baked Global Illuminationを有効にし、Generate Lightingを実行する
  6. 生成完了後にGameビューで確認する。ライトや対象の配置を変えたら再ベイクする

Mixedを使う場合は、Lighting Modeも確認してください。設定項目の表示は、使用するレンダーパイプラインやライティング設定で異なります。

背景は明るいのに、動くキャラが暗いとき

背景に焼き込んだライトマップは、動くキャラクターへそのまま適用されません。キャラだけ周囲になじまない場合は、Light Probesなどでベイクした光を受けられる構成を検討します。

Light Probesはキャラの位置に応じた光を近似する仕組みで、キャラの動きに合わせたリアルタイムの影を作る機能ではありません。動的な影が必要なら、対応するMixed設定やRealtimeライトも組み合わせましょう。
ベイクを効かせるために、動くキャラを無理にStaticへ設定しないでください。

ライトが光らない・影が出ないときの確認点

ライトを置いても明るくならない

  • ライトと対象のGameObjectが有効で、Intensityが0付近になっていないか
  • Point・SpotのRange、Spotの向きと角度が合っているか
  • 対象のマテリアルがライトを受けるものか。Unlit系ではライトの強さを変えても明るさが変わらない
  • Culling MaskやRendering Layersで対象が除外されていないか
  • Bakedなら、GI設定・Contribute GI・ライトマップ用UV・ベイク完了を確認したか
  • URPのPoint・Spotなら、使用中のURP AssetでAdditional LightsがDisabledになっていないか

SceneビューとGameビューで見え方が違う場合は、Sceneビューのライティング表示が有効かも確認します。Areaで困ったときは、まず使用中のパイプラインと対応モードを見直しましょう。

光は当たるのに影が出ない

  • LightのShadow TypeがHardまたはSoftになっているか
  • 影を落とす側のRendererでCast Shadowsが有効か
  • 影を受ける側の設定は有効か。URPではマテリアルのReceive Shadowsも確認する
  • カメラからの距離が影の描画範囲を超えていないか
  • URP AssetでMain Light・Additional Lightsの影が必要に応じて有効になっているか
  • Bakedだけの照明で、動くキャラのリアルタイムの影を期待していないか

影の距離設定は、Built-inではQuality SettingsのShadow Distance、URPではURP AssetのShadowsにあるMax Distanceなどを確認します。設定場所をすべてのパイプラインで同じだと思わないことがポイントです。

パフォーマンス最適化のポイント

  • 変化しない背景の照明はベイクを検討する。ただし動くキャラの照明や影も含めて判断する
  • 影が不要なライトでは影を無効化し、必要な影も解像度や描画距離を見直す
  • リアルタイムライトの数と重なりを抑える。Point・SpotのRangeも必要以上に広げない
  • ライトマップのサイズと枚数にも注意する。ベイクにより描画・メモリの負荷がなくなるわけではない
  • 対象端末で計測する。特にモバイルでは、Unity Profilerなどで変更前後の負荷を比較する

ライトの数だけで重さは決まりません。影、画面内での重なり、レンダーパイプラインや描画方式も影響するので、見た目を確認しながら少しずつ調整しましょう。

まとめ

  • Directionalは広域の光、Pointは周囲を照らす光、Spotは方向のある光、Areaは面からの光に使う
  • Intensityで強さ、RangeやAngleで届く範囲、Rotationで向きを調整する
  • 移動・点滅する光はRealtime、固定した照明はキャラや影の要件に合わせてMixed・Bakedも検討する
  • Areaの対応はパイプラインで異なる。Built-in・URPの基本手順ではベイクして利用する
  • 光らないときはマテリアル・範囲・ベイク設定、影が出ないときはライト・Renderer・描画距離を順に確認する

まずは1つのライトで、種類・明るさ・影の変化を比べるところから始めてみてください。ライトの役割を分けると、雰囲気と動作の軽さを両立しやすくなります。

参考:Unity公式資料