MRが楽しい

MRやVRについて学習したことを書き残す

CanvasGroupを使ってUIをグループ単位で有効/無効を切り替える

本日はUnityの小ネタ枠です。
CanvasGroupを使ってUIをグループ単位で有効/無効を切り替える方法です。

CanvasGroup

CanvasGroupはUI要素のグループ全体に対する特定の機能を与えます。
CanvasGroupのプロパティはそのコンポーネントがアタッチされているゲームオブジェクトと全ての子要素に影響を与えます。
docs.unity3d.com

UIをグループ単位で有効/無効を切り替える

以下のように子要素に全てのボタンオブジェクトを配置したサンプルシーンを用意しました。

CanvasGroupを使ってUIをグループ単位で管理するにはUIの親オブジェクトに[CanvasGroup]コンポーネントを追加します。

シーンを再生して動作を確認します。

CanvasGroupコンポーネントの[Interactable]のチェックを外すと、全ての子要素が入力を受け付けなくなります。

この状態はButtonコンポーネントであればButtonコンポーネントの[Interactable]のチェックを外した状態と同様です。

InteractableとBlockRaycastsの違い

InteractableとBlockRaycastsはどちらもチェックを外すと入力を受け付けなくなりますが、BlockRaycastsはチェックを外すとレイキャスト自体を素通りさせるようになります。
以下の2つのボタングループを重ね合わせたサンプルシーンで動作を確認してみます。

[Interactable]のチェックを外した場合ボタンは入力を受け付けませんが、レイキャストは遮蔽するため背後のボタンを押すことはできません。

[BlockRaycasts]のチェックを外した場合ボタンは入力を受け付けず、さらにレイキャスト自体が素通りするため背後のボタンが押下されます。