UnityUnityメモ

Unity初心者必見!Toggleでオブジェクトの表示を制御する方法

Unity

はじめに

こんにちは!今回は、Unityでトグルを使ってオブジェクトを表示・非表示に切り替える方法を見ていきましょう。ここでは、CubeとSphereのどちらか一方を必ず選択して表示する方法を紹介します。簡単なステップで進めていくので、一緒にやってみましょう!

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



ステップ1:オブジェクトの配置

まずは必要なオブジェクトを配置していきます。

Cubeを配置する

  1. ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
  2. 「3D Object」→「Cube」を選択します。



ステップ2:UIの設定

次に、UIを設定してトグルを作成します。

Toggleを作成する

  1. Canvasを右クリックします。
  2. 「UI」→「Toggle」を選択します。これでトグルが作成されます。
  3. インスペクター(Inspector)ウィンドウで「Toggle」の名前を「CubeToggle」に変更します。



ステップ4:スクリプトの作成

オブジェクトの表示・非表示を制御するスクリプトを作成します。

スクリプトを作成する

  1. ヒエラルキー(Hierarchy)ウィンドウを右クリックして「Create」→「C# Script」を選択します。
  2. スクリプトの名前を「ToggleController」にします。

スクリプトを編集する

  1. 作成したスクリプトをダブルクリックして開き、以下のコードを入力します。

(1) 必要なライブラリのインポート

using UnityEngine;
using UnityEngine.UI; // UIコンポーネントを使用するために必要
  • using UnityEngine:Unityで基本的な機能(ゲームオブジェクト、スクリプトなど)を使えるようにする命令。
  • using UnityEngine.UI:UI(ボタンやスライダー、トグルなど)を使うための命令。これがないとToggleが使えません。

(2) クラスの宣言と変数

public class ToggleController : MonoBehaviour
{
public GameObject objectToToggle; // 表示・非表示を切り替えるオブジェクト
public Toggle toggleControl; // Toggleの参照
}
  • public class ToggleController : MonoBehaviour:スクリプトの本体。MonoBehaviourを継承しているのでUnityにアタッチして使えます。
  • GameObject objectToToggle
    • この変数には、表示・非表示を切り替えたいオブジェクト(CubeやTextなど)をドラッグ&ドロップします。
  • Toggle toggleControl
    • ToggleはスイッチのようなUI部品です。この変数には、シーン内のToggleをドラッグ&ドロップして関連付けます。

(3) ゲーム開始時の処理

void Start()
{
// Toggleの値が変更されたときに呼び出されるメソッドを設定
toggleControl.onValueChanged.AddListener(OnToggleChanged);
}
  • void Start():ゲームが始まったときに最初に実行される処理。
  • toggleControl.onValueChanged.AddListener(OnToggleChanged)
    • ToggleがONかOFFに切り替わったときに呼び出す関数(OnToggleChanged)を登録しています。

(4) Toggleの変更に応じた処理

void OnToggleChanged(bool isOn)
{
// Toggleの状態に応じてオブジェクトの表示・非表示を切り替え
objectToToggle.SetActive(isOn);
}
  • OnToggleChanged(bool isOn):Toggleが変更されたときに実行される関数。
    • bool isOnはToggleがONのときtrue、OFFのときfalseになります。
  • objectToToggle.SetActive(isOn)
    • SetActiveはオブジェクトを表示(true)または非表示(false)にします。
    • ここでは、Toggleの状態(ON/OFF)に応じてオブジェクトを切り替えています。

3. スクリプト全体の流れ

  1. ゲームが始まるとStart()が呼ばれて、Toggleにイベント(OnToggleChanged)を登録します。
  2. プレイヤーがToggleを操作すると、OnToggleChangedが呼び出されます。
  3. OnToggleChangedでは、Toggleの状態に応じてオブジェクトを表示するか隠すかを切り替えます。
using UnityEngine;
using UnityEngine.UI; // UIコンポーネントを使用するために必要

public class ToggleController: MonoBehaviour
{
    public GameObject objectToToggle; // 表示・非表示を切り替えるオブジェクト
    public Toggle toggleControl; // Toggleの参照

    void Start()
    {
        // Toggleの値が変更されたときに呼び出されるメソッドを設定
        toggleControl.onValueChanged.AddListener(OnToggleChanged);
    }

    void OnToggleChanged(bool isOn)
    {
        // Toggleの状態に応じてオブジェクトの表示・非表示を切り替え
        objectToToggle.SetActive(isOn);
    }
}

スクリプトのアタッチ

  1. ヒエラルキー(Hierarchy)ウィンドウで「Canvas」を選択します。
  2. 作成したスクリプト「ToggleController」をインスペクター(Inspector)ウィンドウにドラッグ&ドロップします。

スクリプトの設定をする

  1. 「objectToToggle」に「Cube」を設定します。
  2. 「toggleControl」に「Toggle」を設定します。



テストプレイ

これで設定は完了です!プレイボタンを押して、トグルを操作してみてください。Cubeがうまく表示・非表示されるのを確認できるはずです。

お疲れ様でした!この方法で簡単にトグルを使ったオブジェクトの切り替えができるようになりましたね。もっと色々なオブジェクトやUIを使って、楽しいプロジェクトを作ってみてください。



おすすめのアセット

「Better UI」は、Unityのユーザーインターフェースを簡単かつ効率的に改善するためのツールです。このアセットを使えば、直感的に使えるUI要素を簡単に作成できます。特に、解像度に応じてUIのサイズや位置を自動で調整する機能が便利です。これにより、どんなデバイスでも見やすいUIを提供できます。