fc2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Unity »【Unity】エディタ上(Visual Studio等)のスクリプトをUTF8に固定する

【Unity】エディタ上(Visual Studio等)のスクリプトをUTF8に固定する  


 トラブルシューティングっぽいのが続いてるので、ついでに Unity エディタ上の問題もメモを残しておこう。

 Unity2019(?) くらいからだろうか?エディタ上で作ったスクリプトをインスペクタ上で見ると、文字化けするようになったんだよね。

●新規作成したスクリプトをインスペクタで見てみると、文字化けしている


 テキストエディタ上(Visual Studio等)では問題なく日本語表示されているので、気が付かなかったりするけど、どうやら Windows 上(?)ではデフォルトで Shift-JIS で保存されているらしい…。

 Visual Studio上の設定では UTF-8 になってても、なぜか Unityエディタでは Shift-JIS になってしまう…。対処法をググってみたらやはり同じ問題に出くわした人も多いみたいで、アセットをインポート(更新)する際のイベントハンドラを使って、スクリプトで解決する方法があった。それを試してみたら上手く行ったので、Unity初心者でもわかるように手順を書いておこう。

(※) Unity 2021.3.18f1 / Visual Studio 2019 / Windows11(x64) で確認


1. まずは「新規スクリプト生成時にテキストエンコードをUTF-8に変換する」スクリプトを以下の github からコピーしよう。

新規スクリプト生成時にテキストエンコードをUTF-8に変換する (github)



2. Unity エディタ上でプロジェクトビューから「Editor」フォルダを作り(場所は任意)、「右クリック>Create>C# Script」で新規スクリプトが作れるので、「AssetPostprocessUTF8Encode.cs」などにして作成する。ダブルクリックでテキストエディタ(Visual Studio等)を開いたら、github でコピーしたスクリプトをまるごと貼り付けて保存しよう。



3.「AssetPostprocessUTF8Encode.cs」の保存が完了したら、文字化けしているスクリプトを一旦編集などして保存し直す。すると UTF-8 になっているハズだ。インスペクタで確認しよう(インスペクタが更新されないなら、一旦フォーカスを外し、再度クリックする等)。




 まぁ、どちらの文字コードでも実質問題は無いみたいなんだけどね。素早くインスペクタで中身を確認したいとき等は UTF-8 に統一しておいた方が良いだろう。また「AssetPostprocessUTF8Encode.cs」の 45行目には改行コードの変換も入っているようなので(CRLF→LF)、不要なら Replace() 以降を削除しても良いだろう。その辺りはご自由に。

●45行目に改行コード変換も入ってるので、無効化する場合。
// 改行コードの置き換え
//string contents = enc.GetString(bs).Replace("\r\n", "\n"); //元のコード(CRLF→LF変換)
string contents = enc.GetString(bs); //改行変換を取り除いたコード








(関連記事)
【Unity】Plugins フォルダのプラットフォーム別フォルダ名 メモ
【Unity】「Missing (Script)」を修復する
【Unity】Unity2019以降で新規作成したアセットは、Unity2018以前にインポートすると壊れる?
【Unity】タイトルバーの「PREVIEW PACKAGES IN USE」を消す
【Unity】【C#】インスペクタの値を保持したまま変数をリネームする


関連記事
スポンサーサイト



category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityリファレンス  Unityトラブルシューティング 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/425-036f0030
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

PR

▲ Pagetop