Unity4.3のインスペクターで日本語入力する方法

Unity4.3にすると、Inspector上でIMEが切り替わらなく日本語入力できなかったり、
IMEの切り替えはできても変換途中で勝手にIMEが戻って確定されてしまうようになりました。

その回避方法を見つけたので共有します。

※自動的に変更するスクリプトも公開しました。
【Unity】IMEの状態を自動的に変更するIMEAutoChanger【エディタ拡張】
詳しくは↑こちらを参照してください。

まずは、以下のスクリプトをEditorフォルダに入れてください。

using UnityEngine;
using UnityEditor;
using System.Collections;

public class EditorIME : EditorWindow
{
	[MenuItem("IME/Open")]
	static public void OpenWindow()
	{
		EditorWindow.GetWindow<EditorIME>(false, "Editor IME", true);
	}

	private string _text="";

	void OnGUI()
	{
		GUILayout.BeginHorizontal();

		GUILayout.Label( "Mode" );

		string[] selString = System.Enum.GetNames( typeof(IMECompositionMode) );

		Input.imeCompositionMode = (IMECompositionMode)GUILayout.SelectionGrid( (int)Input.imeCompositionMode,selString,selString.Length );

		GUILayout.EndHorizontal();

		_text = EditorGUILayout.TextArea( _text,GUILayout.Height(80f) );
	}
}

すると、メニューにIME/Openというのが出てくるのでクリック。

EditorIME

このようなウィンドウが出てくるので、ModeをOnにすればIMEの切り替えや日本語入力がインスペクタ上でも可能になります。
その下のTextAreaで試し入力してもらえれば、Modeによる挙動の違いが確認できます。

※ModeをOnにすると、どこでもIME切り替えできるようになってしまうため、必要がないときはAutoに戻しておいたほうが良さそうです。

この件ですが、
どうやらInput.imeCompositionModeがデフォルトでAutoになっており、Autoだとテキスト入力枠に入ると自動でIME切り替えできるようになっているはずが、
バグで強制的にオフになるようになっているようです。

入力するたびにModeをOnにしなければなりませんが、バージョン下げるのも大変なので、修正されるまではこれで我慢するしかなさそうです。

Unityのアセット販売中!

Arbor 2

ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。

詳細はこちら

Nostalgia 2

RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。

詳細はこちら

オススメ!


  • 歩野

    記事を読ませていただきました。 つい先日Unity4に手を出したプログラム初心者です。
    こちらの説明を何度も読ませて頂いたのですが、
    スクリプトをEditorフォルダに投入することはともかく、
    如何にしてスクリプトを生成し、Unity上に反映させるのかがわかりません。

    こちらで使用しているOSはWin7 proです。
    お恥ずかしい話ではありますが…もし宜しければご教示願いたく思います。
    長文失礼致しました。

    • LycoRadi

      コメントありがとうございます。
      管理人りこりすです。

      さて、スクリプトの追加手順についてですが。

      ・Projectパネルの右側(ファイルリストが表示されている場所)で右クリック、Create > FolderでEditorフォルダを作成(作ってなければ)

      ・作ったEditorフォルダを選択後、再度右クリック、Create > C# ScriptでEditorIMEファイルを作成(実際のファイル拡張子はcsですがUnity上では省略されるため入力する必要はありません)

      ・EditorIMEをダブルクリックして、MonoDevelopを開く。

      ・今回のソースコードをコピペして保存。

      ・Unity側に戻りメニューバーあたりをクリックすると、IMEというのが追加されるので、IME > Openで開く。

      ・あとは、記事にあるとおりModeをOnにすると日本語が正常に入力できるようになるかと思います。

      補足として、今回はUnityのEditor拡張機能というのを利用して、新たにウィンドウを追加するようにしています。
      ゲーム用のスクリプトとはまた若干構造が違うためご注意ください。

      また、基本的な使い方で分からない点があれば、公式チュートリアルの
      http://japan.unity3d.com/developer/document/tutorial/
      こちらを見ていただければ、スクショつきで分かりやすいかと思います。

      グッドラック!

  • 歩野

    ご教示、ありがとうございます。
    早速教えていただいた手順を踏んでみましたところ、
    無事にスクリプトの追加、並びに機能の反映をすることが出来ました。
    懇切丁寧な説明、本当にありがとうございました。
    プログラムやゲーム作成など、1から始めた若輩者ではありますが、
    よりよい作品を作り出すことが出来るよう、頑張ります。

  • Pingback: 【Unity】エディタ上で自動的に日本語入力できるようにするIMEAutoChanger【エディタ拡張】 | ケットシーウェア()