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のアセット販売中!

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

詳細はこちら

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

詳細はこちら

オススメ!