unity では 2019 現在でも windows と mac のテキストエンコードが統一されておらず、「Windows でソースコードの中に日本語を入れると、mac で文字化け(最悪コードエラー)」という状態です。
mac に Shift-JIS はありませんが、Windows は UTF8 でも問題ありません。
ならばソースコードを UTF8 に矯正するエディタープログラムを作っておこう。という事で共有します。
ダウンロード (GitHub)
使い方
GitHub のサンプルプロジェクトから Editor/EncodeUtf8 を自分のプロジェクトにコピーします。
場合によってはこれだけで(UTF8 ではない)全てのソースコードが変換されるかもしれません。
(ログに表示されます)
変換されなかった場合、追加されたメニュー Tools/Encode Utf8 を実行すると全てのコードを Assets/ から探し出し、強制的に UTF8 に変換します。
改行も \n に強制する
iOS 対応などで Windows と mac を行き来した人なら一度は見たことがあるエラー。
There are inconsistent line endings in the ‘Assets/Script/xxxxxx.cs’ script. Some are Mac OS X (UNIX) and some are Windows.
1つのファイルに Windows改行 CRLF(\r\n) と mac改行 LF(\n) が混在し、それが原因で問題が起こるかもしれない、という忠告です。
mac には '\r\n'(CRLF) がないのですが、Windows(というより VS?)は '\n'(LF) でも問題なく動作するので、ソースコードの改行を '\n'(LF) に合わせます。
エンコード判定について
テキストのエンコード判定は DOBON.Net を参考にしました。
エンコード判定は「これで確実」といった方法がないため、特殊なエンコードの場合変換されないかもしれません。その場合は判定部分を hnx8 さん作の ReadJEnc に差し替えるなど、より確実な判定ロジックをご使用ください。
(unity が特殊なエンコードでソースファイルを生成することはないと思いますが…)
エディタの改行を LF に強制する
せっかくソースコードを整理したのに、Visual Studio (Code) の改行が CRLF の場合、保存する度にお馴染みのワーニングが出てしまいます。
There are inconsistent line endings in the ‘Assets/Script/xxxxxx.cs’ script. Some are Mac OS X (UNIX) and some are Windows.
エディタも 改行 = LF に変更しましょう。
Visual Studio
プロジェクトごとの設定。unity プロジェクトフォルダ直下に .editorconfig というファイルを置きます。中身はこんな風に。
[*] end_of_line = lf charset = utf-8-bom
VS Code(Visual Studio Code)
表示 > コマンドパレット
。settings と入力し、基本設定: ユーザー設定を開く (JSON) を選択。
開かれたファイルに以下を追加。
プロジェクトごとに変更したい場合は、基本設定: フォルダー設定を開く (JSON) にすればいいと思います。 (多分)
"files.eol": "\n", "code-eol.style": { "color" : "#ffa41b", // whatever hex color you want "opacity" : 0.4 },
俺は秀丸だ!いや、TeraPad だ!Sublimeだ!
すまない。使ってないんだ。頑張って設定シテクレ。
ハロワで受講できる合格倍率5倍以上とされる IT 履修(半年間学校に通う)では、2022 年現在テキストエディタに TeraPad を使う「漢の授業」だそうです…。