レイヤー
オブジェクトの層を分離する
主にデザイン時の都合であることが多いのですが、オブジェクトをタグや階層とは別の論理的な重ね合わせで管理したいことがあります。例えば「背景」「障害物」「演出用オブジェクト」などです。
Unity にはレイヤーと呼ばれる機能があり、オブジェクトは任意のレイヤーの属することができます。Unity エディタ上で特定のレイヤーを非表示にするということができるほか、ゲームを描画するときのカメラでもレイヤー別のマスク機能があります。
オブジェクトのレイヤーの Unity エディタ上で設定するには「Inspector」ウィンドウの上部にある「Layer」ドロップボックスをクリックし、表示されたリストの中から選択します。
ユーザー定義のレイヤを追加することもできます。新しいレイヤーを追加するには図1のドロップダウンリストから「Add Layer...」項目を選択してください。「Tag Manager」が表示され、ここにレイヤーが一覧されています。
レイヤーは名前ではなく番号で識別されます。0 番から 7 番までは組み込みの Builtin Layer として定義済みです。ユーザー定義のレイヤーは User Layer 8 より下の 8 番以降に指定します。Unity エディタ上では名前で識別できますが、スクリプトからは単純な番号で管理します。
レイヤーの応用例として、Unity エディタ上のシーンで特定のレイヤーだけを非表示にするということができます。画面右上にある「Layer」コンボボックスをクリックするとレイヤーの一覧が表示され、チェックされている項目だけがシーン上に表示されます。
作業中、特定のレイヤーだけを表示し、編集しない不要なレイヤーを非表示にすることで、誤ったオブジェクトを選択するといった面倒を避けられます。
スクリプトからオブジェクトのレイヤーを制御するには layer プロパティを利用します。
public int layer { get; set; }
このプロパティは、オブジェクトのレイヤーを番号で表します。Default レイヤーは 0 番で表されます。
using UnityEngine; public class Test : MonoBehaviour { void Start() { gameObject.layer = 8; } }
コード1は単にオブジェクトのレイヤーをユーザー定義の 8 番に変更するというスクリプトです。実行すると、このスクリプトが設定されているオブジェクトのレイヤー番号が 8 番に変更されます。