【Unity】ゲームオブジェクトの有効、無効を切り替えたい

実行されるたびに有効無効を切り替えるコードを考えてみましょう

実行コード

このコードはUnityでよく使われるもので、ゲームオブジェクトのアクティブ状態を切り替えるために使用します。

gameObject.SetActive(!gameObject.activeSelf);

具体的には、この1行のコードは次のように動作します

  • gameObject はアクセスしたいゲームオブジェクトを指します。
  • activeSelf プロパティは、そのゲームオブジェクトが現在アクティブ(表示されて操作可能)かどうかを示すブール値(trueまたはfalse)を返します。
  • ! は論理否定演算子で、真偽値を反転させます。つまり、オブジェクトがアクティブなら false に、非アクティブなら true に変わります。
  • SetActive() メソッドは、指定したブール値に基づいてゲームオブジェクトのアクティブ状態を設定します。

このコード行は、「もしオブジェクトがアクティブなら非アクティブにし、非アクティブならアクティブにする」という動作を一つの操作で行います。これは、例えばメニューの表示/非表示や、インタラクティブなオブジェクトのオン/オフを切り替える際に便利です。

using UnityEngine;

public class VisibilityToggle : MonoBehaviour
{
    public GameObject targetObject;  // エディタから指定する対象のゲームオブジェクト

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))  // スペースキーが押されたら
        {
            // 対象のオブジェクトのアクティブ状態を切り替える
            targetObject.SetActive(!targetObject.activeSelf);
        }
    }
}

使い方

  1. このスクリプトを VisibilityToggle という名前でUnityのエディタ内に新しいC#スクリプトとして作成します。
  2. 作成したスクリプトをゲームシーン内の任意のアクティブなゲームオブジェクトにアタッチします(例えば空のGameObjectなど)。
  3. スクリプトの targetObject プロパティに、表示状態を切り替えたいゲームオブジェクトをドラッグ&ドロップして設定します。
  4. ゲームをプレイし、スペースキーを押して対象オブジェクトの表示と非表示を切り替えます。

このシンプルな例を通じて、特定のユーザー入力に応じてオブジェクトの表示状態を動的に切り替える方法を実演できます。

Unity

Posted by hidepon