LemonteaのUnity部屋

UnityとかC#のおはなしです~

Unity 文章入力 プレイヤーに自由に書いてもらう

youtu.be


皆さんこんにちは。レモンティーです。

今回は、文章入力の実装です!


ざっくり説明すると

①InputFieldとButtonとTextを用意する
②入力をTextに渡すスクリプトを付ける

だけです!
さっそくやってみましょう。


Create>UI>InputField でInputFieldを作ります。

f:id:sawalemontea:20170728222700p:plain

あとのButtonとTextも↑と同じ要領で作ります。

最終的にこんな感じになります。

f:id:sawalemontea:20170728222751p:plain


②Buttonが押されると、InputFieldの入力をTextに渡すスクリプトを書きます。

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

public class Write : MonoBehaviour {

    public InputField GetInput;
    public Text text;

    public void InputText()
    {
        text.text = GetInput.text;
        GetInput.text = null;
    }
	
}

こんな感じでOKです。スクリプトの補足説明は最後に書きます。

今回はこれをButtonにアタッチしましょう。

後は、Buttonのインスペクターを↓のように設定すれば完成です。


f:id:sawalemontea:20170728223222p:plain


一応インスペクターの設定を補足しておくと、
On Click()の所で、押された時に
どのオブジェクトについているスクリプトの、どのメソッドを呼び出すのか
を設定しています。

Writeの所で、
publicで宣言しておいた変数に中身をセットしています。



(おまけ)スクリプト補足

Using UnityEngine.UI

これは、UIをスクリプトで弄る時には書いておかないといけません。


    public InputField GetInput;
    public Text text;

ここで、使用するUIを入れる変数をpublicで宣言しておくことで、
インスペクターから設定できるようになります。

 text.text = GetInput.text;

UnityのUI(TextやInputField)では、textを読んだり書いたりするときに
X.textのようにします。
これはstring型ですので、通常はstring型の変数Aを

X.text = A;

のように代入して書き換えます。

 GetInput.text = null;

ここでは、上記の要領で、InputFieldの中身を空っぽにしています。
でないと次に入力するときに、前回の入力内容が残ったままになります。

今回はこれで終わりです。
ありがとうございます(゜▽゜)