バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はUnityで指定したコンポーネントをキー入力でオンオフするスクリプトを書いたので、それについての記事です。
オブジェクトのインスペクターごとオンオフするスクリプトは以前書いたのでそちらを参照。
やりたいこと:特定のキーを押したら、指定したコンポーネントをオンオフできるようにしたい
やりたいことは、uLipSyncで喋っている時に任意の場所でコンポーネントをオフにして、無言と喋るのを切り替えるようにしたい。
uLipSyncについては以前記事を書いたのでそちらを参照。
モデルにコンポーネントをつけているため、インスペクターオフじゃなくてコンポーネントごとにオンオフしたいと思った。
ChatGPTパイセンに聞いてみる
とりあえず彼に聞けばなんでも答えてくれるはず…。




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


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 ? "有効化" : "無効化") + " しました");
}
}
}
🔧 使い方:
- 空のGameObjectを作成(例:
ComponentToggleManager
など)。 - このスクリプト(
ComponentToggleOnKey
)をアタッチ。 - Inspectorで:
Toggle Key
に押したいキー(例:Alpha0
→ キーボードの0
)を設定。Target Component
に 無効化したいコンポーネント(例:Light、Collider、Scriptなど)をD&D。
🎯 対応可能なコンポーネント:
Behaviour
を継承しているクラス(MonoBehaviour
,Light
,Collider
,Camera
など)が対象です。- 例えば
MeshRenderer
などのComponent
はBehaviour
を継承していないため対象外ですが、対応させることも可能です(後述で補足します)。
✅ もし Behaviour 以外のコンポーネントも対象にしたい場合:
たとえば MeshRenderer
や Rigidbody
も無効化対象にしたいなら、型を Component
にして enabled
プロパティをリフレクションで処理できます。それも必要であれば追記しますので、言ってください!
さっそく使ってみる
スクリプトをコピペして、なんでもいいからオブジェクトにアタッチ、キーとコンポーネントを指定します。
デフォルトでは0キー、uLipSyncのコンポーネントを指定しました。


これで切り替えられた!
これで良い感じに切り替えられましたね。
オーディオクリップ切り替えスクリプトは以前書いたから、これで任意のタイミングでセリフをしゃべらせたりできるかな…。
シチュエーション系の動画とか作れそうですw
おわりに
案外手軽にできて良かった。
動画やゲームに使えると思うけど、こういうシンプルなスクリプトを組み合わせて制御していくと楽かな。
また何かあれば追記します(*^-^*)