【Unity】Sceneビューやカメラのレイヤー表示を切り替える

普通にGUI上からいじれますが、どうしてもスクリプトでやりたいでござる…!というときのために。

以下のようにTools.visibleLayersを編集することで実現できます。

// UIレイヤーを非表示
Tools.visibleLayers &= ~(1 << LayerMask.NameToLayer ("UI"));

// UIレイヤーを非表示にして他は表示
Tools.visibleLayers = ~(1 << LayerMask.NameToLayer ("UI"));

// UIレイヤーを表示
Tools.visibleLayers |= (1 << LayerMask.NameToLayer ("UI"));

// UIレイヤーのみ表示
Tools.visibleLayers = (1 << LayerMask.NameToLayer ("UI"));

GameViewのカメラのcullingMaskも同じように操作可能なので、その場合はTools.visibleLayersをCamera.main.cullingMaskなどに読み替えてください。

また、上のコードではLayerMask.NameToLayerを用いてレイヤーのindexを取得してますが、勿論自分でindexを指定してもよいので、その場合はレイヤーのInspectorを開けば操作対象のindexが分かります。
(「UI」でいうと「Builtin Layer 5」になっているので5を指定する形)

Everything(全レイヤーを表示)に戻したい場合は-1を代入してやればよいです。

Tools.visibleLayers = -1;

スポンサーリンク