Unity のノベルゲーム制作エンジン、Naninovel はよく使うUIがあらかじめ用意されているので、面倒な初期設定をほとんどしなくてもいきなりゲームを作り始めることができます。
ただし、日本語ゲームを作る際は必ずやっておくべき初期設定が一つあります。それは、入力フォームを日本語に対応させることです。
ノベルゲームでは主人公の名前をプレイヤーに入力させて、キャラクター名に入力した名前を表示させることが一般的ですよね。
デフォルトでは、入力フォームにアルファベットで入力した内容は反映されるのですが、日本語で入力した内容が反映されません。修正しましょう。
入力フォームのUIはあらかじめ VariableInputUI というプレハブとして保存されているので、それを探します。プロジェクトウィンドウから以下のパスを辿ります。
Assets/Naninovel/Prefabs/DefaultUI/VariableInputUI.prefab
VariableInputUI プレハブをダブルクリックして開いたら、 InputField という項目を選択します。
インスペクターメニューで Line Type を Single Line から Multi Line Newline に変更します。
無事に日本語で入力した内容が変数に反映できるようになりました。
しかしこのままでは改行ができてしまうので、このように名前に改行が入ってしまいます。
もうひと手間加えましょう。
On Value Changedイベントを登録して、改行が含まれていたら削除するようにします。
まずプロジェクトフォルダの任意の場所に、新しいC#スクリプトを作って、InputFieldEventという名前を付けます。スクリプトの内容は以下の通りです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InputFieldEvent : MonoBehaviour
{
public void OnValueChanged()
{
string value = this.GetComponent<InputField>().text;
if (value.IndexOf("\n") != -1)
{
value = value.Replace("\r", "").Replace("\n", "");
this.GetComponent<InputField>().text = value;
}
}
}
そのあと、次の手順でイベントを登録します。
これで、入力項目の改行が無視されるようになりました。