Naninovelを日本語入力に対応させよう

ゲーム開発 |

Unity のノベルゲーム制作エンジン、Naninovel はよく使うUIがあらかじめ用意されているので、面倒な初期設定をほとんどしなくてもいきなりゲームを作り始めることができます。

ただし、日本語ゲームを作る際は必ずやっておくべき初期設定が一つあります。それは、入力フォームを日本語に対応させることです。

ノベルゲームでは主人公の名前をプレイヤーに入力させて、キャラクター名に入力した名前を表示させることが一般的ですよね。

デフォルトでは、入力フォームにアルファベットで入力した内容は反映されるのですが、日本語で入力した内容が反映されません。修正しましょう。

Naninovelを日本語入力に対応させる手順

入力プレハブを編集

入力フォームの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;
        }
    }
}

そのあと、次の手順でイベントを登録します。

  1. 作ったスクリプトを、InputField のインスペクタウィンドウの下あたりにドラッグ&ドロップ
  2. On Value Changedの+ボタンを押して
  3. InputField をOn Input Changedにドラッグ&ドロップ。InputField>OnValueChanged() を選択

これで、入力項目の改行が無視されるようになりました。

参考にした記事

https://note.com/npaka/n/n08473eef2afa


この記事もおすすめ

執筆者

Yulius

ゲームの翻訳を承っています。お気軽にご相談ください。

お問い合わせ