チリペヂィア

リンクフリー。サンプルコードなどは関連記事内でライセンスについて明示されない限り商用利用なども自由に行って構いませんが、自己責任でお願いします。またこれら日記内容の著作権自体は放棄していません。引用部分については引用元の権利に従ってください。

UnityとMonoDevelop日本語対応状況再確認

今更ですがUnity3→4に乗り換えました。で、日本語対応は乗り換えたら確認しなきゃいけないいわゆるひとつの通過点。ちなみに前回の記事Mono Develop ソースコードに日本語コメント打ち込むためフォント作りですが、参考にならないでス(改修されないまま現象だけ違う)。


Mono Develop上の日本語変換

Mono上では変わらず日本語打てないと考えるべきかも。

WinXP SP3 (Unity4.1.5f1)

打ち込めるけど、変換前の文字がどこにも表示されません(あれ〜3の時は一応どっかに出てなかったけなー。画面左下に出るという噂もあるんですが)。勘で変換するしかないので実質打ち込めません。

Mac10.6.8 (Unity4.2.0f4)

まったく打ち込めません。(それどころかできもしないGUI言語ローカライズを断行してメニューが文字化けしまくる始末…対策=[Preferences > VisualStyle > General > User Interface Language]を明示的にEnglishに変更)

結局のところMonoがレンダに採用してるGTK+の問題らしく、Mono開発的には「そりゃMonoじゃなくてGTK+の仕様だわ」と言う気持ちは分かるのです。とは言えIDEとしちゃわりと致命的。もしWin環境ならVisualStudio導入が結局オススメですねー…。
UnityのエディタをVisual Studio Express 2012に変更する

ソースの文字コード

文字コードの対応具合

Unity4WinXP SP3 (Unity4.1.5f1)Mac10.6.8 (Unity4.2.0f4)
UTF16BE×:Unity上のプレビューは全て文字化け・ビルドエラー×:左に同じ
UTF16LE
UTF8(BOM有)
UTF8(BOM無)×:Unity上でプレビューはできる・ビルドエラー

新規C#スクリプトを作る時のデフォルト

WinXP SP3 (Unity4.1.5f1)Mac10.6.8 (Unity4.2.0f4)
UTF-8 BOM無しUTF-8 BOM有り
今度はUTF-8BOMが正解ですか。それにしてはWin版の「BOMがないとエラーするのにBOMなしデータを生成」は問題…と思ったら素敵な対策を発見。 DEBUG.LOG スクリプトファイルのutf-8変換 (AssetPostprocessUTF8Encode) 公開されてるcsを、次のどちらかの方法でプロジェクトに追加します。

  • AssetsにEditorフォルダを作ってEditor以下に追加
  • #if UNITY_EDITOR 〜 #endif あたりで囲って適当にAssetsに追加

Unityで新規スクリプト作成時のイベントをフックして、UTF-8でBOMがついてなければ勝手に補完してくれるスクリプトになっています(*1)。

*1:Mac環境でも問題なく動きました。というか、Macの場合はデフォルトでBOM付きなので、ソース見たところ条件判定で変換処理がはじかれてるはず。