【Unity】Rendering Layerとは?ライトオブジェクトによる照明の影響を決める機能

Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「UnityのRendering Layerってなに?」

「Rendering Layerを使うとどうなるの?」

というお悩みの方に向けた内容となっています。

Unityでは、照明となるLightオブジェクトに対して、Rendering Layerという設定を行うことができます。

このRendering Layerは、照明をグルーピングすることができる機能で、そのLayerの照明がゲームオブジェクトに対してどのように影響するかを決めている項目です。

例えば、そのLightオブジェクトを、特定のゲームオブジェクトにのみ影響するようにしたい場合、Rendering Layerを使うことで実装できます。

そこで、このページでは、Rendering Layerがどういう機能なのか、また設定や使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

Rendering Layerとは?

Rendering Layerとは、Unity内で照明の役割を持つLight(ライト)オブジェクトをグルーピングしている機能のことを指しています。

このRendering Layerを使うことで、ゲームオブジェクトに対して、特定のRendering Layerを設定している照明の影響を与えるかどうかを決めることができます。

例えば、Lightオブジェクトを2つ準備して、Rendering Layerをそれぞれ「A」「B」に分けた際、配置しているゲームオブジェクト側で、

  • 「A」の照明だけの影響を受ける
  • 「B」の照明だけの影響を受ける
  • 「A」と「B」のどちらも影響を受ける
  • 「A」と「B」のどちらも影響を受けない

といった設定を行うことができるようになります。

そのため、複数のLightオブジェクトを配置している場合に、オブジェクトに対してどの照明の影響を与えたいかを決める設定が、Rendering Layerの機能となっています。

なお、Lightオブジェクトに関して、あまりよく知らない方は、以下のページも参考にしてみてください。

Rendering Layerの使い方

ここからは、実際にUnityでのRendering Layerの使い方についてまとめていきます。

Rendering Layerの設定方法

Rendering Layerを設定する際は、設定したいLightオブジェクトを選択して、インスペクターウィンドウからLightコンポーネントの「Rendering」の中にある「Rendering Layer」の項目で設定します。

初期設定は「Default」のLayerのみが選択されていますが、プルダウンを開いて変更することができます。

Rendering Layerの設定は、Default以外に「Light Layer」というのが初めから7つ作成されているので、基本的にはこの中からどのLayerに所属させるか、マウスでクリックしながら選択することになります。

Rendering Layerの場合、選ぶのは一つのLayerだけでなく、複数のLayerを設定することができ、他にも「Everything」を選択するとすべてのLayerにチェックが入り、「Nothing」にすると全てのLayerが解除されます。

もし、Layer名を変更したり、新しく追加したい場合は、インスペクターウィンドウの上にある「Layer」の項目をクリックして「Add Layer…」を選択します。

すると、Tag & Layersという管理画面が表示されるので、この中の「Rendering Layers」の項目で名前を変更したり、新しいLayerを作成することができます。

オブジェクト側でRendering Layer Maskの設定をする

オブジェクトでRendering Layerの照明の影響を受けるためには、オブジェクトの「Rendering Layer Mask」という項目でLayerを指定する必要があります。

オブジェクトを選択した状態で、インスペクターウィンドウのMesh Rendererコンポーネントの中にある「Rendering Layer Mask」で、どのLayerにある照明の影響を受けたいかを指定することができます。

ここでは、実際に赤色と青色のLightオブジェクト(Point Light)を配置して、オブジェクトによってどの照明の影響を受けるかを設定してみます。

まず、赤色のLightオブジェクトのRendering Layerを「Light Layer1」、青色のLightオブジェクトのRendering Layerを「Light Layer2」に設定しておきます。

そして、左のオブジェクトは、赤色の照明だけを当てたいので、Rendering Layer Maskの設定を「Light Layer1」だけにしておきます。

右のオブジェクトは、青色の照明だけを当てたいので、Rendering Layer Maskの設定を「Light Layer2」だけにしておきます。

真ん中のオブジェクトは、赤色の照明も青色の照明も当てたいので、Rendering Layer Maskの設定で両方のLayerを選択しておきます。

これでゲーム画面を見て見ると、

Rendering Layerを使うことで、最初と異なりオブジェクトによってそれぞれ当たる照明を分けることができています。

なお、このページでは照明の影響だけを紹介しましたが、Rendering Layerを使って影の表示も設定することができます。

影については、以下のページでも詳しくまとめていますので、参考にしてみてください。

まとめ

このページでは、Unityで使えるRendering Layerについて、どんな機能なのか、設定方法や使い方までをまとめていきましたが、いかがでしたでしょうか?

Rendering Layerとは、照明の役割があるLightオブジェクトをグルーピングしている機能です。

このRendering Layerを使うことで、ゲームオブジェクトでどの照明の影響を受けるかどうかを決めることができます。

また、Rendering Layerは照明だけでなく、影の表示に関しても設定することができる機能です。

最後までお読みいただきまして、ありがとうございました!

コメント