UnityUnityメモ

Unity初心者でも簡単!InputFieldでテキストを配列に順番に格納する方法

Unity

はじめに

この記事では、Unityの InputField を使用して、入力されたテキストデータを配列に順番に格納する方法を解説します。初心者の方でも簡単に実装できるように、わかりやすく具体的な手順を示しています。

本記事で学べること

  • InputFieldの基本操作: ユーザーインターフェース(UI)を作成するためのInputFieldをシーンに追加します。
  • C#スクリプトの実装: 配列を使ってデータを保存する仕組みを構築します。
  • スクリプトとUIの連携: InputFieldとスクリプトを関連付けて、ユーザー入力を効率的に管理します。

これらのスキルを学ぶことで、よりインタラクティブで魅力的なゲームを作成する第一歩を踏み出せます。それでは早速、シーンにInputFieldを追加するところから始めていきましょう!

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




2. InputFieldをシーンに追加する

このステップでは、UnityでInputFieldをシーンに追加し、画面に配置する方法を説明します。InputFieldはユーザーからのテキスト入力を受け取るために便利なUI要素です。


InputFieldを追加する手順

  1. ヒエラルキーウィンドウで右クリックする
    ヒエラルキーウィンドウの任意の場所を右クリックし、コンテキストメニューを開きます。
  2. 「UI」→「Input Field (Legacy)」を選択する
    メニューから「UI」を選び、その中の「Input Field (Legacy)」をクリックします。これでシーンにInputFieldが追加されます。
  3. InputFieldがシーンに追加されることを確認する
    シーンビューの中央付近にInputFieldが表示されるはずです。また、ヒエラルキーウィンドウにも新しいInputFieldオブジェクトが追加されていることを確認してください。

InputFieldのサイズや位置を調整する

追加されたInputFieldを見やすい位置に配置し、適切なサイズに調整します。

  1. RectTransformを操作する
    InputFieldを選択した状態で、Inspectorウィンドウの「RectTransform」コンポーネントを確認します。ここで位置やサイズを変更できます。
    • サイズの変更: Width(幅)や Height(高さ)の数値を変更します。
    • 位置の変更: Pos X や Pos Y を調整して、画面内での配置を変更します。
  2. 直感的に操作する方法
    シーンビュー内でInputFieldをドラッグして位置を変更することもできます。角をドラッグすれば、サイズも簡単に調整できます。

ヒント:UIの見た目をカスタマイズ

InputFieldのデザインを変更したい場合は、以下のような設定を試してみてください。

  • テキストフォントや色を変更する
    Inspector内の「Text」コンポーネントでフォントサイズや色を設定できます。
  • 背景色を変更する
    InputFieldの「Image」コンポーネントで背景色をカスタマイズできます。

これで、シーンにInputFieldを追加し、見やすく配置する準備が整いました。次は、スクリプトを作成して、このInputFieldを使ってテキストデータを配列に格納する方法を学びましょう!



3. C#スクリプトの作成とコードの記述

このステップでは、テキストを配列に格納するためのC#スクリプトを作成します。以下の手順に従って進めてみましょう!

スクリプトの作成方法

  1. プロジェクトウィンドウを開く
    Unityの画面下部にあるプロジェクトウィンドウを確認してください。
  2. 右クリックしてスクリプトを作成
    プロジェクトウィンドウの空いている場所で右クリックし、「Create」→「C# Script」を選択します。
  3. スクリプトに名前を付ける
    新しいスクリプトに InputArray と名前を付けます。わかりやすい名前にすることで、後で管理しやすくなります。

コードを記述する

スクリプトをダブルクリックして開き、以下のコードを入力してください。

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

public class InputArray : MonoBehaviour
{
    public InputField inputField; // InputFieldの参照
    public string[] myArray = new string[3]; // 配列(最大3つ格納)
    public int count; // カウント変数

    void Start()
    {
        // InputFieldを取得
        inputField = inputField.GetComponent<InputField>();
        count = 0; // 初期化
    }

    // テキストを配列に格納するメソッド
    public void SetText()
    {
        // 入力内容を配列に順番に格納
        if (count < 3)
        {
            myArray[count] = inputField.text; // 配列にテキストを保存
            inputField.text = ""; // InputFieldを空白にリセット
            count++; // カウントを増加
        }
        else
        {
            Debug.Log("配列は満杯です!"); // 配列が満杯の場合のログ
        }
    }
}

コードの動作説明

  • inputField
    この変数は、シーン内のInputFieldコンポーネントと連携するために使用します。
  • myArray
    テキストデータを格納するための配列です。今回は3つまで格納できるように設定しています。
  • SetText メソッド
    このメソッドは、InputFieldに入力されたテキストを配列に格納する役割を持ちます。配列が満杯の場合には、デバッグメッセージで通知します。

コードを入力したら、保存してUnityに戻りましょう!エラーがなければ、次のステップでスクリプトをオブジェクトにアタッチして設定を進めていきます。



3.InputFieldとスクリプトの関連付け

ここでは、作成したInputFieldとスクリプトをUnity上で関連付ける方法を解説します。この手順を正しく行うことで、InputFieldで入力されたデータがスクリプトに渡され、配列に格納されるようになります。


1. 空のゲームオブジェクトを作成する

  1. ヒエラルキーウィンドウで右クリックし、「Create Empty」を選択します。
    → これで新しい空のゲームオブジェクトが作成されます。
  2. 作成されたオブジェクトの名前を「InputManager」に変更しましょう(わかりやすい名前であればOKです)。

2. スクリプトをアタッチする

  1. プロジェクトウィンドウで作成したスクリプト(例: InputArray.cs)を探します。
  2. スクリプトを「InputManager」オブジェクトにドラッグ&ドロップします。
    → これでスクリプトがInputManagerにアタッチされました。

3. InspectorでInputFieldを関連付ける

  1. ヒエラルキーウィンドウで作成したInputFieldを選択します。
  2. InputManagerオブジェクトをクリックし、Inspectorウィンドウを開きます。
  3. Inspectorで、InputArrayスクリプト内にある「Input Field」というフィールドを探します。
  4. このフィールドに、ヒエラルキーウィンドウからInputFieldをドラッグ&ドロップします。

これで、スクリプトとInputFieldが関連付けられました。次は、InputFieldで入力したテキストが配列に正しく格納されるかを確認するためにイベント設定を行います。次のセクションで詳しく解説します!



5. 「On End Edit」イベントの設定

「On End Edit」イベントは、ユーザーがInputFieldに入力を終えたタイミングで特定のアクションを実行する便利な機能です。ここでは、このイベントを使って、入力されたテキストを配列に格納するSetTextメソッドを呼び出す設定方法を解説します。


手順1: InputFieldを選択する

まず、ヒエラルキー内で、先ほど作成したInputFieldをクリックして選択します。選択すると、**インスペクター(Inspector)**ウィンドウにその詳細が表示されます。


手順2: 「On End Edit」項目を見つける

インスペクターウィンドウを下にスクロールすると、「On End Edit」という項目が表示されます。この項目は、ユーザーが入力を終了した際に呼び出されるアクションを設定するためのものです。


手順3: イベントリスナーを追加する

  1. 「+」ボタンをクリックして、新しいイベントリスナーを追加します。
  2. 新しく追加された空欄の右側にある「」ボタンをクリックします。
  3. ドロップダウンリストが表示されるので、スクリプトがアタッチされたゲームオブジェクトをドラッグ&ドロップで設定します。

手順4: SetTextメソッドを選択する

  1. ドロップダウンリスト内で、「InputArray → SetText」を選択します。
    これにより、ユーザーがテキスト入力を終了するたびに、SetTextメソッドが呼び出されるようになります。

これで、「On End Edit」イベントを使った設定は完了です!次のステップでは、テスト結果を詳しく確認してみましょう。



6. 動作テスト

ここまでの手順が完了したら、実際に動作をテストしてみましょう。以下の手順で動作確認を行います。

1. プレイモードに入る

Unityエディターの上部にある「▶(再生ボタン)」をクリックして、プレイモードを開始します。
画面中央に配置したInputFieldが表示されていることを確認してください。

2. テキストを入力

InputFieldにテキストを入力してみましょう。例えば「Unity」という文字列を入力し、Enterキーを押します。
設定した「On End Edit」イベントによって、SetTextメソッドが呼び出され、入力されたテキストが配列に格納されます。

3. 配列の内容を確認

入力したデータが正しく配列に格納されているか、コンソールで確認します。Unityエディターの「Console」タブを開いて、次のようなログを探してください。

[配列の内容]: Unity

2回目、3回目とテキストを入力して確認すると、順番に配列へ格納されていることがわかります。
例:

  • 1回目:「Unity」
  • 2回目:「C#」
  • 3回目:「Script」

4. 配列が満杯になった場合

配列のサイズを超えて入力した場合、以下のようなログが表示されるはずです。

配列は満杯です!

これでスクリプトが正しく動作していることが確認できます。


ポイント

  • 必要に応じて「InputField.text」や「myArray」の内容をデバッグログに出力して、データの流れを確認してください。
  • 配列が満杯になった際に、UI上でエラーメッセージを表示するなどの追加機能を実装することで、より使いやすい仕組みを作成できます。



よくある質問(FAQ)

Q
配列のサイズを増やしたい場合はどうすればいいですか?
A

配列のサイズを増やしたい場合は、スクリプト内で string[] myArray = new string[3];[3] を希望するサイズに変更してください。例えば、5つのデータを格納したい場合は [5] に変更します。また、if (count < 3) の条件も新しいサイズに合わせて変更してください。

Q
配列の内容を確認する方法はありますか?
A

配列の内容を確認するには、以下のようなコードを追加します:

public void PrintArray()
{
for (int i = 0; i < myArray.Length; i++)
{
Debug.Log($"myArray[{i}] = {myArray[i]}");
}
}

このメソッドを呼び出すと、Unityのコンソールに配列内のデータが順番に表示されます。

Q
配列が満杯になった場合の対処法は?
A

配列が満杯になった際に古いデータを削除したり、新しいデータを追加できるようにするには、リスト(List<string>)を使用する方法が便利です。リストを使えば柔軟にデータを追加・削除できます。以下はリスト版の例です:

public List<string> myList = new List<string>();

public void SetTextToList()
{
myList.Add(inputField.text); // 入力されたテキストをリストに追加
inputField.text = ""; // InputFieldをリセット
Debug.Log("現在のリスト内容:" + string.Join(", ", myList));
}

これで、配列サイズに制限されずにデータを管理できます。

おすすめのアセット

「Point Cloud Viewer and Tools」は、Unityで点群データを扱うための便利なツールセットです。このアセットを使用すると、LiDARや3Dスキャンから得られる点群データを簡単にインポート、表示、操作できます。

主な特徴:

  • 多様なファイル形式のサポート: PLY、XYZ、LASなど、一般的な点群データ形式に対応しています。
  • 高性能なレンダリング: 大規模な点群データでもスムーズに表示できる最適化が施されています。
  • カスタマイズ可能な表示設定: 点のサイズや色、透明度などを自由に調整可能です。

おすすめポイント:

  • 直感的な操作: ユーザーフレンドリーなインターフェースで、初心者でも簡単に扱えます。
  • プロジェクトの効率化: 点群データの取り扱いが容易になり、開発時間を短縮できます。
  • 高い互換性: Unityのビルトインレンダーパイプラインと互換性があり、幅広いプロジェクトで利用可能です。