読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】WebGLで日本語入力を行う

WebGL Unity 日本語 トラブルシューティング

WebGLは日本語の入力が出来ません。何故ならばIMが使用出来ないからです。
UnityのWebGLでもIMは使用出来ず、キー入力を片っ端から受けソノママ流し込める半角英数字のみが表現可能みたいです。なのでコピペも出来ません。

 

そんな問題があった訳ですが、Unityの入力をHTML側で代替する手段が公開されたみたいです。

WebGLNativeInputField

f:id:tsubaki_t1:20160603020650g:plain

WebGLNativeInputFieldはWebGL上で入力を行う際にダイアログを表示し、そこに入力するシステムです。要するにダイアログに表示したHTMLの入力欄ならばIMEを使用して入力を制御する事も可能という寸法です。

helpdesk.unity3d.co.jp

ちなみに、Androidも同じシステムで入力制御しているっぽいです。入力時にキーボード上に出てくる「入力確認欄」がAndroidネイティブのInputFieldのソレです。

使い方

  • こちらからWebGLNativeInputFieldのUnitypackageを入手し、インポート。
  • GameObject>Create>UI>InpufFieldで、InputFieldを作成。
  • InputFieldコンポーネントを削除し、WebGLNativeInputField.csを設定。

f:id:tsubaki_t1:20160603021640j:plain

f:id:tsubaki_t1:20160603021646j:plain

これでWebGLで入力欄を選択した際、ダイアログが表示されます。また、エディタや他のプラットフォームで実行した場合、通常のWebGLとして振る舞います。

 

また日本語を表示するには「日本語が含まれるフォント」を設定する必要があります。初期設定のArialには英数字しか含まれていないので、WebGLは日本語のフォント表示出来ない為です。
(デモにはM+ FONTS | ABOUTのフォントが含まれていました。フォントをゲームに組み込む場合「再配布」扱いとなるので、使用にはご注意を)

f:id:tsubaki_t1:20160603024335j:plain

問題点

この方法は、現在2つの問題があります。

  • ダイアログを表示中はゲームの進行が停止する。
  • ダイアログを一度キャンセルした後にダイアログ表示を抑制すると、以降ダイアログが(ページを一旦閉じるまで)表示されなくなる。
    (ブラウザ毎に挙動が異なる可能性も)
    Overlay htmlを使う設定で回避出来るみたいです。

f:id:tsubaki_t1:20160603022021j:plain

プロジェクトは現在オープンソースで提供されているみたいです。

github.com

関連

helpdesk.unity3d.co.jp

入力欄の位置にCanvas置いて云々する奴みたいです。

d.hatena.ne.jp

tips.hecomi.com