UnityにおけるSetActiveの使い方と注意点

UnityのGameObjectにおけるSetActiveメソッドは、オブジェクトの有効/無効状態を制御するために使用されます。本資料では、SetActiveの基本的な使い方、親子関係における挙動、状態の確認方法、そして実際の使用例について解説します。


1. 基本的な使い方

  • SetActive(true):
    ゲームオブジェクトを有効化します。これにより、オブジェクトは描画され、物理演算が有効になり、スクリプトのUpdateメソッドなどが実行されます。
  • SetActive(false):
    ゲームオブジェクトを無効化します。無効化されたオブジェクトは、シーン上に存在していても描画されず、物理演算やスクリプトのUpdateメソッドも実行されなくなります。

2. 親子関係における挙動

  • 親オブジェクトの影響:
    親オブジェクトがSetActive(false)で無効化されると、その子オブジェクトはたとえ自分自身がSetActive(true)に設定されていても、シーン上では無効(activeInHierarchyがfalse)となります。
  • 子オブジェクトの状態:
    親が有効な状態であれば、子オブジェクトの状態はそのオブジェクト自身のactiveSelfプロパティに依存します。

3. 状態の確認

  • activeSelf:
    ゲームオブジェクト自身が有効かどうかを示すフラグです。親オブジェクトの状態は含まれません。
  • activeInHierarchy:
    ゲームオブジェクトがシーン上で実際に有効かどうかを示すフラグです。親子関係も考慮されます。

4. 使用例

以下は、ゲームオブジェクトを無効化し、後で再度有効化するシンプルな例です。

// オブジェクトを無効化
gameObject.SetActive(false);

// 後で再度有効化
gameObject.SetActive(true);

まとめ

SetActiveメソッドを活用することで、シーン内のオブジェクトの表示や動作をプログラムから柔軟に制御することが可能です。特に、親子関係における有効/無効の挙動や、状態確認の際に使用するactiveSelfactiveInHierarchyの違いを正しく理解することが重要です。

Unity

Posted by hidepon