Unityで指定したコンポーネントをキー入力でオンオフするスクリプトを書いたのでメモ

unity コンポーネントオフ script 切り替え unityスクリプト
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事はUnityで指定したコンポーネントをキー入力でオンオフするスクリプトを書いたので、それについての記事です。

オブジェクトのインスペクターごとオンオフするスクリプトは以前書いたのでそちらを参照。

●PRスペース●
■PR■

現在人気商品が最大90%以上オフで買えるAmazonプライム感謝祭セールをやってるみたいです(2025/10/10 23:59まで )。

Amazonプライム感謝祭セール開催中 最大90%以上オフ

欲しい商品はこの機会に買っておくと良いかも。

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

やりたいこと:特定のキーを押したら、指定したコンポーネントをオンオフできるようにしたい

やりたいことは、uLipSyncで喋っている時に任意の場所でコンポーネントをオフにして、無言と喋るのを切り替えるようにしたい。

uLipSyncについては以前記事を書いたのでそちらを参照。

モデルにコンポーネントをつけているため、インスペクターオフじゃなくてコンポーネントごとにオンオフしたいと思った。

ChatGPTパイセンに聞いてみる

とりあえず彼に聞けばなんでも答えてくれるはず…。

unity コンポーネントオフ script 切り替え
神部まゆみ
神部まゆみ

unityをいじっています。0キーを押したら指定したコンポーネントをオフにするスクリプトが欲しいです。 出来ればキーを選択出来て、オフにするコンポーネントはD&Dで指定できるようにしてくれるとありがたいです。

ChatGPT
ChatGPT

Unityで、指定したキー(例: 0キー)を押すと、インスペクターで指定したコンポーネントを無効化(enabled = false)できるようにするスクリプトを作成します。

以下のスクリプトでは:

  • 任意のキーをInspectorで設定可能(KeyCode)。
  • 無効化したいコンポーネントをInspectorでDrag & Dropで指定できます(Behaviour型を使用)。
  • 指定したキーを押すたびに ON/OFF を切り替える(トグル)

スクリプト ComponentToggleOnKey.cs

using UnityEngine;

public class ComponentToggleOnKey : MonoBehaviour
{
    [Header("トグルに使うキー")]
    public KeyCode toggleKey = KeyCode.Alpha0;

    [Header("ON/OFFを切り替えたいコンポーネント")]
    public Behaviour targetComponent;

    void Update()
    {
        if (Input.GetKeyDown(toggleKey) && targetComponent != null)
        {
            // 現在の状態を反転(ONならOFFに、OFFならONに)
            targetComponent.enabled = !targetComponent.enabled;

            Debug.Log($"{targetComponent.GetType().Name} を " + 
                      (targetComponent.enabled ? "有効化" : "無効化") + " しました");
        }
    }
}

🔧 使い方:

  1. 空のGameObjectを作成(例:ComponentToggleManagerなど)。
  2. このスクリプト(ComponentToggleOnKey)をアタッチ。
  3. Inspectorで:
    • Toggle Key に押したいキー(例:Alpha0 → キーボードの 0)を設定。
    • Target Component無効化したいコンポーネント(例:Light、Collider、Scriptなど)をD&D

🎯 対応可能なコンポーネント:

  • Behaviourを継承しているクラス(MonoBehaviour, Light, Collider, Cameraなど)が対象です。
  • 例えば MeshRenderer などの ComponentBehaviourを継承していないため対象外ですが、対応させることも可能です(後述で補足します)。

✅ もし Behaviour 以外のコンポーネントも対象にしたい場合:

たとえば MeshRendererRigidbody も無効化対象にしたいなら、型を Component にして enabled プロパティをリフレクションで処理できます。それも必要であれば追記しますので、言ってください!

さっそく使ってみる

スクリプトをコピペして、なんでもいいからオブジェクトにアタッチ、キーとコンポーネントを指定します。

デフォルトでは0キー、uLipSyncのコンポーネントを指定しました。

unity コンポーネントオフ script 切り替え

これで切り替えられた!

これで良い感じに切り替えられましたね。

オーディオクリップ切り替えスクリプトは以前書いたから、これで任意のタイミングでセリフをしゃべらせたりできるかな…。

シチュエーション系の動画とか作れそうですw

おわりに

案外手軽にできて良かった。

動画やゲームに使えると思うけど、こういうシンプルなスクリプトを組み合わせて制御していくと楽かな。

また何かあれば追記します(*^-^*)

タイトルとURLをコピーしました