メインコンテンツまでスキップ

アクティブ/非アクティブ

GameObjectの機能が起動しているか/停止しているかを表したもの

なに?

アクティブ/非アクティブとは、Inspectorウィンドウから各GameObjectに対して設定可能な項目で、そのGameObjectがもつ全てのコンポーネントの機能を起動/停止させるかどうかを決定するためのものです。

一般に、アバター改変においてはRenderer コンポーネントを持つGameObjectのアクティブ/非アクティブを切り替えることに衣装の着替えや物の出し入れを表現することができます。これは、GameObjectを非アクティブにすることで対応するRendererコンポーネントの「描画する」機能が止まるため、結果として画面には何も表示されなくなるからです。

GameObjectをアクティブ/非アクティブにしたときに何が起こるかは、GameObjectに入れられたコンポーネントごとによって振る舞いが変わります。が、おおむね「コンポーネントに任された仕事をこなすか(=アクティブ)、休憩してるか(=非アクティブ)」で考えてよいでしょう。Rendererコンポーネントなら描画をするかしないかですし、Colliderコンポーネントなら当たり判定をするかしないか、といった具合です。「表示を消したかっただけなのに物が貫通するようになった」などのケースは、必要なコンポーネントの処理が停止してないかを確認してみてください。

ちなみに、単に「見えなくする」ことを考える場合、様々な方法が考えられます。

  • ①Unityの世界からGameObjectごと消し去る(※スクリプト制御のためワールド作成のみ、アバター改変においては使えない)
  • ②GameObjectを非アクティブにする
  • ③そのGameObjectがもつRendererコンポーネントの機能を停止させる(enable/disable)
  • ④GameObjectのスケールを0にする
  • ⑤その他(シェーダー側の項目を変更して「透明化」するなど)

「瞬間的あるいは持続的にかかる負荷の大きさ」「実装の大変さ」「やりたいことをどこまで再現したいか」などを加味して判断する必要があるので、困ったらまずは質問掲示板などで相談をしてみるのが良いでしょう。