ひとつのスクリプトで多数のオブジェクト管理する


オブジェクトごとにスクリプトを生成する方法ではオブジェクト間(スクリプト間)での値のやり取りがとても面倒くさい。
そのため、ひとつのスクリプトで多数のオブジェクトを管理する方法を記載する。
まずいつも通り
- Crate Emptyで空のオブジェクト生成
- Input Field生成
- Button生成
を行う。Create EmptyしたGame Objectは名前をAdminにしておく(何でもよいが分かりやすくするため)。

AdminオブジェクトでAdd ComponentしてNew Scritpを生成する(スクリプト名は今回はAdminScriptとする)。
以下のようにアタッチする。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// これ追加忘れずに
using UnityEngine.UI;
public class AdminScript : MonoBehaviour
{
    // publicにしないとダメ
    public InputField input_field_id;
    // 入力した文字列保存用
    private string input_txt;
    // input fieldでの入力判定
    public void InputID()
    {
        input_txt = this.input_field_id.text;
        print(input_txt);
    }
    // ボタンが押された時の処理
    public void LoginButtonPush()
    {
        if (input_txt == "abc")
        {
            print("正解です。");
        }
        else
        {
            print("不正解です。");
        }
    }
}

Adminオブジェクトのスクリプト内のメンバ変数input_filed_idにInputFIledオブジェクトを対応付けする。

インプットフィールドのオブジェクトを設定する。

ボタンのオブジェクトを設定する。

これで実行してinputFieldにabcを入力してButtonを押すと"正解です。"と出力され、それ以外を入力した場合は"不正解です。"と出力される。

このように、Adminオブジェクトに対応させたAdminScriptひとつでインプットフィールドとボタンのオブジェクトが操作できるようになる。

参考