1.はじめに
ゲーム開発をしていると、キー操作でオブジェクトを切り替えたい場面が出てきますよね?たとえば、プレイヤーが武器を持ち替えたり、キャラクターの見た目を変更したりするときに使えます。
このような処理は if
文を使って書くこともできますが、条件が増えるとコードが長くなり、見づらくなってしまいます。そこで便利なのが switch
文です! switch
文を使えば、スッキリとしたコードでオブジェクトの切り替えができます。
この記事では、左右キー(← →)を押すたびに Cube
・Sphere
・Cylinder
を順番に切り替える方法 を紹介します。初心者の方でも簡単に実装できるので、一緒に試してみましょう!
ちなみに、スクリプトを書くのがちょっと苦手…という方には、
コードを書かずにゲームの動きを作れるビジュアルスクリプティングツール「PlayMaker」もおすすめです!
もっと直感的にロジックを組みたい人は、そちらもチェックしてみてください。
2. 事前準備
それでは、実際にUnityでオブジェクトを切り替えるスクリプトを作る準備をしていきましょう。まずは、シーンに必要なオブジェクトを配置していきます。
① Unityの新規プロジェクトを作成
まず、Unityを開いて 3Dテンプレート で新しいプロジェクトを作成してください。プロジェクト名は「SwitchObject」としておくと分かりやすいでしょう。
② 3Dオブジェクトを作成
オブジェクトを切り替える対象として、「Cube」「Sphere」「Cylinder」の3つを作成します。
Hierarchy
ウィンドウで右クリック- 「3D Object」 → 「Cube」 を選択
- 同じ手順で「Sphere」と「Cylinder」も作成

オブジェクトの名前をわかりやすくするため、Cube
, Sphere
, Cylinder
にそれぞれリネームしておきましょう。
③ オブジェクトを非表示にする
作成した3つのオブジェクトのうち、最初に表示するのは Cube のみにします。Sphere
と Cylinder
は、最初は見えないように 非アクティブ にしておきます。
Hierarchy
でSphere
をクリックし、Inspector
ウィンドウを開くInspector
内のチェックボックス (GameObjectのアクティブ状態)
をオフにする- 同じ手順で
Cylinder
も非アクティブにする
これで、ゲーム開始時には Cube
だけが表示される状態になります。
④ 空のオブジェクトを作成
次に、3Dオブジェクトを管理するための 空のオブジェクト を作成します。
Hierarchy
ウィンドウで 右クリック → Create Empty を選択- 作成された
GameObject
をObjectManager
にリネーム
このオブジェクトに、スクリプトをアタッチして キー操作でオブジェクトを切り替える処理 を実装していきます。

これで、スクリプトを適用するための 事前準備 は完了です!次のステップでは、switch
文を使って キー操作でオブジェクトを切り替えるスクリプト を作成していきます。
3. スクリプトの作成
では、オブジェクトを切り替えるスクリプトを作成していきましょう!
まずは ChangeObject.cs
という名前のスクリプトを作成し、それを空のオブジェクトにアタッチします。
1. スクリプトを作成する
Project
ウィンドウを開く右クリック → Create → C# Script
を選択- 新しいスクリプトの名前を
ChangeObject
に変更
💡ポイント: スクリプト名は後から変更することもできますが、間違えないように最初から適切な名前をつけるのがオススメです!
2. スクリプトを空のオブジェクトにアタッチ
次に、このスクリプトをヒエラルキーの空のオブジェクトにアタッチしましょう。
Hierarchy
ウィンドウで右クリック → Create Empty
を選択- 作成された「GameObject」の名前を
ObjectManager
に変更(分かりやすくするため) ChangeObject.cs
を ドラッグ&ドロップ してObjectManager
にアタッチ!
💡ポイント: スクリプトをオブジェクトにアタッチすることで、
ChangeObject
のコードがObjectManager
に適用され、スクリプトが正しく動作するようになります。

これで、スクリプトの準備が完了しました!
次は、スクリプトの中身を記述していきます。
4. スクリプトの記述
スクリプトを開いて、以下のコードを入力してください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeObject : MonoBehaviour
{
public GameObject cube; // Cubeのオブジェクト
public GameObject sphere; // Sphereのオブジェクト
public GameObject cylinder; // Cylinderのオブジェクト
public int count; // 切り替え用のカウンター
void Start()
{
count = 1; // 初期状態をCubeに設定
}
void Update()
{
// 右キーを押したらカウントを増やす
if (Input.GetKeyDown(KeyCode.RightArrow)){
count++;
if(count > 3){ // 3を超えたら1に戻す
count = 1;
}
}
// 左キーを押したらカウントを減らす
if (Input.GetKeyDown(KeyCode.LeftArrow)){
count--;
if(count < 1){ // 1より小さくなったら3に戻す
count = 3;
}
}
// countの値に応じてオブジェクトの表示を切り替える
switch(count)
{
case 1:
cube.SetActive(true);
sphere.SetActive(false);
cylinder.SetActive(false);
break;
case 2:
cube.SetActive(false);
sphere.SetActive(true);
cylinder.SetActive(false);
break;
case 3:
cube.SetActive(false);
sphere.SetActive(false);
cylinder.SetActive(true);
break;
}
}
}
③ スクリプトの解説
このスクリプトでは、キー操作によってオブジェクトの表示を切り替える処理 を行っています。
public GameObject cube, sphere, cylinder;
→Cube
、Sphere
、Cylinder
のオブジェクトを取得するための変数を作成int count;
→ どのオブジェクトを表示するかを管理するためのカウンター変数Start()
メソッド
→ ゲーム開始時にcount = 1
を設定し、最初にCube
を表示するようにするUpdate()
メソッド→
キーを押したらcount
を増やす←
キーを押したらcount
を減らすcount
の値が1
から3
の範囲を超えないようにループ処理
switch(count)
を使って、count
の値に応じてSetActive(true)
とSetActive(false)
でオブジェクトを切り替え
④ スクリプトをオブジェクトに適用
次に、Hierarchy
ウィンドウで 空のオブジェクト
を選択し、Inspector
の ChangeObject
スクリプトの 「Cube」「Sphere」「Cylinder」 の欄に、それぞれ対応するオブジェクトを ドラッグ&ドロップ
で設定してください。

5. 実行と確認
では、作成したスクリプトを実際に動かしてみましょう!
① ゲームを実行
では、設定が完了したので ゲームを実行 してみましょう!
- Unityエディターの 再生ボタン(▶) をクリック
- シーンビューまたはゲームビューでオブジェクトの状態を確認
② キー入力で切り替えを試す
次に、キーボードの 左右キー(← →) を押して、オブジェクトが切り替わるか試してみましょう!
→
(右キー)を押すとCube
→Sphere
→Cylinder
→Cube
(ループする)
←
(左キー)を押すとCylinder
→Sphere
→Cube
→Cylinder
(逆順でループ)
動作チェックポイント ✅ →
キーを押すとオブジェクトが順番に切り替わる
✅ ←
キーを押すとオブジェクトが逆順に切り替わる
✅ 画面に 1つのオブジェクト だけが表示される(他は非表示になっている)
これで、switch
文を使ったオブジェクトの切り替えが正しく動作することを確認できました! 🎉
③ よくあるエラーと対処法
もし正しく動作しない場合は、以下をチェックしてみてください。
🔍 スクリプトの設定ミス
Cube
、Sphere
、Cylinder
のスロットが 空になっていないか 確認- もし空なら、もう一度ドラッグ&ドロップする
🔍 オブジェクトのアクティブ設定
- 最初の状態で、すべてのオブジェクトが アクティブ(表示) になっていないか確認
- ゲーム開始時に
Cube
のみtrue
、他はfalse
にする
🔍 キー入力の確認
Unityエディター
のGame
ウィンドウがアクティブになっているか確認- 他のウィンドウを選択していると、キー入力が反応しないことがある
④ 応用のヒント
このスクリプトを発展させて、もっと複雑な切り替えを作ることもできます!
✨ 応用アイデア
- オブジェクトの種類を増やす(例:4つ以上のオブジェクトを切り替える)
- アニメーションを追加(フェードイン・フェードアウトを加えて滑らかに切り替え)
- ボタン操作でも切り替え可能にする(UIボタンを使ってオブジェクトを変更)
いろいろなアイデアを試して、自分のゲームに活用してみてください! 🚀
よくある質問(FAQ)
- Q3つ以上のオブジェクトを切り替えたい場合はどうすればいいですか?
- A
count
の範囲を1~3
ではなく1~任意の数
に変更し、新しいオブジェクトを追加してswitch
文に条件を追加すればOKです。
- Q
switch
文ではなくif
文でも同じことはできますか? - A
できますが、
switch
文のほうが可読性が高く、コードがスッキリします。
- Qゲームオブジェクトが多くなると
switch
文が長くなりませんか? - A
List<GameObject>
を使えば、オブジェクトを配列管理でき、よりシンプルに記述できます。