UnityUnityメモ

Unityで簡単!配列オブジェクトを左右キーで切り替える方法

Unity

1. はじめに

Unityでゲームを作成する際、複数のオブジェクトを切り替えて表示させる機能はとても便利です。たとえば、キャラクターの選択画面や、異なる武器やアイテムを切り替えるときに役立ちます。本記事では、Unity初心者でも簡単に理解できるように、配列(Array)に登録したオブジェクトを左右キーで切り替える方法を解説します。

具体的には、3つの3Dオブジェクト(Cube、Sphere、Cylinder)を使い、右キーで次のオブジェクト、左キーで前のオブジェクトに切り替える仕組みを作成します。シンプルなコードとわかりやすいステップで、Unityの基本操作とスクリプトの書き方を学びながら進めていきましょう!

この記事を通じて、配列の基本的な使い方や、オブジェクトのアクティブ状態を切り替える方法をマスターできます。まずは準備から始めてみましょう!


Unityを触ったことがないという方はコチラの記事から見てみてください!



2. 必要な準備

Unityでオブジェクトを切り替える機能を実装するために、まずは基本的な準備を行いましょう。以下の手順を参考に、プロジェクト内で必要な設定を進めてください。

2-1. Unityプロジェクトの作成

  1. Unityを起動し、新しいプロジェクトを作成します。
  2. プロジェクト名を「ObjectSwitcherProject」など、分かりやすい名前に設定してください。
  3. テンプレートは「3D」を選択し、プロジェクトを作成します。

2-2. オブジェクトの作成

次に、切り替え対象となるオブジェクトを作成します。

  1. ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
  2. 表示されるメニューから**「3D Object」→「Cube」**を選択します。
  3. 同様の手順で、Sphere(球体)とCylinder(円柱)も作成します。
    • Cube、Sphere、Cylinderの3つがヒエラルキーに追加されていることを確認してください。

これで、3つの異なるオブジェクトが揃いました。

2-3. 名前の変更(オプション)

オブジェクトを管理しやすくするために、それぞれの名前を変更することをおすすめします。

  1. ヒエラルキーウィンドウで各オブジェクトを選択します。
  2. 「Cube」→「MyCube」「Sphere」→「MySphere」、**「Cylinder」→「MyCylinder」**とリネームしてください。

2-4. 空のオブジェクトを作成

オブジェクトを切り替える機能を管理するために、空のオブジェクトを作成します。

  1. ヒエラルキーウィンドウを右クリックし、**「Create Empty」**を選択します。
  2. 作成された空のオブジェクトを選択し、名前を**「ObjectSwitcher」**に変更します。
  3. Inspectorウィンドウで、この空のオブジェクトの位置を「(0, 0, 0)」に設定します。

以上で、オブジェクトを切り替える準備が整いました。次は、スクリプトの作成に進みます!



3. スクリプトの作成

ここでは、オブジェクトを左右キーで切り替えるためのスクリプトを作成します。以下の手順に従って進めてください。


スクリプトを作成する方法

  1. プロジェクトウィンドウで右クリック
    プロジェクトウィンドウの空白部分を右クリックして、**「Create」→「C# Script」**を選択します。
  2. スクリプトに名前を付ける
    新しく作成されたスクリプトに「ObjectChange」という名前を付けます。名前を付けるときは、スクリプト名と同じ名前でクラスを定義する必要があるため、間違えないように注意してください。
  3. スクリプトを開く
    作成した「ObjectChange」スクリプトをダブルクリックして開きます。これにより、スクリプトエディタ(通常はVisual Studio)が開きます。

コードの記述

次に、以下のコードをスクリプトに記述します。このコードは、配列内のオブジェクトを左右キーで切り替えるロジックを実装しています。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectChange : MonoBehaviour
{
    public GameObject[] myArray = new GameObject[3]; // 配列
    public int count;

    void Start()
    {
        count = 0; // 最初の要素を表示
    }

    void Update()
    {
        // 右キーを押したら次のオブジェクトへ
        if (Input.GetKeyDown(KeyCode.RightArrow)){
            count++;
            if(count > 2){ // 配列の最後を超えたら最初に戻る
                count = 0;
            }
        }

        // 左キーを押したら前のオブジェクトへ
        if (Input.GetKeyDown(KeyCode.LeftArrow)){
            count--;
            if(count < 0){ // 配列の最初を超えたら最後に戻る
                count = 2;
            }
        }

        // オブジェクトの表示切り替え
        if(count == 0){
            myArray[0].gameObject.SetActive(true);
            myArray[1].gameObject.SetActive(false);
            myArray[2].gameObject.SetActive(false);  
        }

        if(count == 1){
            myArray[0].gameObject.SetActive(false);
            myArray[1].gameObject.SetActive(true);
            myArray[2].gameObject.SetActive(false);  
        }

        if(count == 2){
            myArray[0].gameObject.SetActive(false);
            myArray[1].gameObject.SetActive(false);
            myArray[2].gameObject.SetActive(true);  
        }
    }
}

コードのポイント解説

  • 配列の宣言
    public GameObject[] myArrayで、3つのオブジェクトを格納できる配列を作成しています。
  • キー入力でカウントを変更
    Input.GetKeyDown(KeyCode.RightArrow)Input.GetKeyDown(KeyCode.LeftArrow)でキー入力を検知し、配列内のインデックスを増減させています。
  • オブジェクトの表示・非表示
    SetActive(true)SetActive(false)を使って、現在のオブジェクトだけを表示するように切り替えています。

これでスクリプトの記述は完了です!次のステップでは、このスクリプトを空のオブジェクトにアタッチし、配列にオブジェクトを登録する方法を説明します。



4. スクリプトのアタッチと設定

作成したスクリプト「ObjectChange」を実際に使用するために、空のオブジェクト(ObjectSwitcher)にアタッチし、配列にオブジェクトを登録する手順を解説します。

スクリプトをオブジェクトにアタッチ

  1. ヒエラルキー(Hierarchy)ウィンドウで、空のオブジェクト「ObjectSwitcher」をクリックして選択します。
  2. プロジェクト(Project)ウィンドウで作成した「ObjectChange」スクリプトを探します。
  3. 「ObjectChange」スクリプトをドラッグ&ドロップで「ObjectSwitcher」にアタッチします。

アタッチが完了すると、Inspector(インスペクター)ウィンドウで「ObjectChange」のスクリプトが確認できます。

配列にオブジェクトを登録

  1. Inspector(インスペクター)ウィンドウの「ObjectChange (Script)」セクションを確認します。
  2. 「My Array」という配列項目があります。この横にある「Size」を3に設定します。
    • これにより、配列の要素数が3つに増えます。
  3. Cube、Sphere、Cylinderをそれぞれのスロットにドラッグ&ドロップして登録します。
    • 配列のスロットには、オブジェクトが順番に登録されます(スロット0にCube、スロット1にSphere、スロット2にCylinderを設定)。

設定の確認

最後に、配列に正しくオブジェクトが登録されているか確認してください。配列のそれぞれのスロットにオブジェクトが表示されていれば準備完了です!

これで、スクリプトのアタッチと設定は完了です。次のステップでテストプレイを行い、左右キーでオブジェクトが切り替わることを確認しましょう!



5. テストプレイ

ここでは、設定した左右キーによるオブジェクト切り替えが正しく動作するかテストプレイを行います。以下の手順を試してください。


1. ゲームを実行

Unityエディターの上部にある**「Play」ボタン**をクリックしてゲームを開始します。


2. 左右キーを押して確認

ゲーム実行中にキーボードの左右キーを押して、オブジェクトが切り替わるか確認します。

  • 右キー(→)を押すと:Cube → Sphere → Cylinderの順に切り替わります。
  • 左キー(←)を押すと:Cylinder → Sphere → Cubeの順に切り替わります。

3. 表示内容を確認

キーを押したとき、1つのオブジェクトだけが表示され、他のオブジェクトが非表示になっていることを確認してください。これが動作していればスクリプトは正常に機能しています。


4. 不具合がある場合

もし、以下のような問題が発生した場合は、それぞれの対処法を確認してください。

  • オブジェクトが切り替わらない
    • 配列にオブジェクトが正しく登録されているか確認してください。InspectorウィンドウでmyArrayの中身を見て、Cube, Sphere, Cylinderが登録されているかチェックしましょう。
  • エラーが表示される
    • Consoleウィンドウを確認してエラーメッセージを読みましょう。例えば、配列が空の場合や登録したオブジェクトが削除されている場合、エラーが発生することがあります。

テストが成功すれば、オブジェクト切り替え機能の完成です!次のステップでは、この仕組みをさらに応用した使い方を試してみましょう。



6. まとめ

この記事では、Unityで配列に登録したオブジェクトを左右キーで切り替える方法について解説しました。以下のポイントを押さえておきましょう:

  • オブジェクトの作成と管理
    ヒエラルキーでCube、Sphere、Cylinderを作成し、空のオブジェクト「ObjectSwitcher」を用意しました。この手順を覚えておくと、プロジェクトで複数のオブジェクトを効率的に管理できます。
  • スクリプトの活用
    「ObjectChange」スクリプトを作成し、配列とキー入力を使ってオブジェクトの切り替えを実装しました。この方法は、UIメニューの切り替えやキャラクター選択システムなど、さまざまな場面で応用できます。
  • Inspectorの活用
    配列のサイズ設定やオブジェクト登録をInspectorで行いました。視覚的に設定できるため、スクリプトを変更せずにカスタマイズが可能です。

この手法をマスターすれば、Unityでのオブジェクト操作がもっと便利になり、プロジェクトをスムーズに進められるようになります。次回は、この機能をさらに発展させて、アニメーションやエフェクトを加える方法も試してみましょう!

Unityを使いこなして、楽しいゲーム開発ライフを送ってください! 😊



よくある質問(FAQ)

Q
配列のサイズを変更するにはどうしたらいいですか?
A

配列のサイズを変更する場合は、Inspectorウィンドウで「myArray」のサイズを希望の数値に設定してください。その後、新しい要素に対応するオブジェクトをドラッグ&ドロップして登録することで変更が反映されます。

Q
切り替え時にエラーが出ます。どうしたらいいですか?
A

エラーが発生する場合は以下を確認してください:

  • 配列にすべてのオブジェクトが正しく登録されているか。
  • スクリプトのコードが正確に記述されているか。
  • 登録したオブジェクトがヒエラルキーウィンドウに存在しているか。 これらを確認しても解決しない場合は、エラーメッセージを参考にして原因を特定しましょう。
Q
別のキーで切り替えることはできますか?
A

もちろん可能です!スクリプト内の以下のコード部分を変更してください:

if (Input.GetKeyDown(KeyCode.RightArrow))

このKeyCode.RightArrowを、例えばKeyCode.Dに変更すれば「Dキー」で切り替えられるようになります。同様に、左キーの部分もKeyCode.Aなどに変更可能です。

おすすめのアセット

「Mouse Cursor System PRO」は、Unityプロジェクトでカスタマイズ可能なマウスカーソルを簡単に実装できるツールです。このアセットを使用すると、プロジェクトに独自のアニメーションカーソルを追加し、ユーザー体験を向上させることができます。

主な特徴:

  • アニメーション対応: 静的なカーソルだけでなく、アニメーションするカーソルも簡単に設定可能です。
  • 学習ビデオ付き: 導入や設定方法を解説した学習ビデオが含まれており、初心者でも安心して利用できます。
  • 高い互換性: Unityのビルトイン、URP、HDRPなど、主要なレンダーパイプラインと互換性があります。

おすすめポイント:

  • 使いやすさ: 直感的なインターフェースで、複雑な設定なしにカスタムカーソルを導入できます。
  • プロジェクトの個性化: 独自のカーソルデザインで、ゲームやアプリの雰囲気を強化できます。
  • 時間の節約: ゼロからカーソルシステムを構築する手間を省き、開発効率を向上させます。