Unity上で新しく作成したスクリプトをVisualStudioで編集すると、
スクリプトのプレビューが文字化けするようになってしまいました。
これまで特に意識したことはなかったですが、Unityのバージョンで挙動が異なるかもしれません。
まず間違いなく文字コード絡みの問題なので、ちょっと詳しく対処法を調べてみました。
これはコメントに入れた日本語が文字化けしている様子です。
UnityからC#のスクリプトファイルを作成するとUTF-8(BOM無し)になりますが、VisualStudioはUTF-8(BOM付き)じゃないとコードページを解釈できずにShift-JISになってしまうようです。
VisualStudioで保存するときにエンコードをUTF-8 シグネチャ付きに変更すれば解決できますが、ファイルを作る度にやってたら面倒くさいですし、そのうち忘れそうですね。
こちらのAssetPostprocessorで変換する方法でも解決できます。
ただ、実装を見ると追加・変更の度にファイルを開いてエンコードを推測して、異なる場合は正しいエンコードに書き換えるという処理が走ってしまいます。
スクリプトに手を入れる度にチェックが走るのは余計ですし、外部アセットなど元からエンコードが整っているものをインポートする際にも走ってしまいます。大量のスクリプトを含むアセットのインポートでは無視できないコストになるかもしれませんし、プロジェクトが膨らんでくるとインポート時間も長くなっていくので、予め省けるコストは省いておきたいですよね。
そこで、VisualStudioの .editorconfig を使うのがスマートでオススメです!
これをUnityが生成するVisualStudioの.slnファイルと同じディレクトリに置いておけば、特別な操作をしなくてもエンコードをUTF-8(BOM付き)に統一してくれます。
EditorConfigの詳しい説明はVisualStudioの公式ページを見て欲しいですが、要はエンコードや改行コード、タブやスペースなどのスタイルをチームで一貫するための設定ファイルです。
バージョン管理に追加しておけば、チームで編集するスクリプトファイルに意図しないエンコードが混じることはないでしょう。チームがVSCodeも使っている場合、VSCodeにも同様にEditorConfigがあるので設定を合わせておくと良いです。
既に作成済みのスクリプトファイルは?
文字コードを一括変換するツールを使うと良いです。
この手のツールの中では ZiiDetector が軽量で安定していて使いやすかったです。
スクリプトを含むフォルダをドラッグ&ドロップして、変換したい文字コードを選択して「変換」を押すだけでOKです。オプションで除外拡張子を指定できるので、Unityの場合はmetaを省いておけばC#のスクリプトファイルだけ一括変換できます。
VisualStudioは.editorconfigでエンコードを統一する方法を紹介しましたが、他にテキストファイルのエンコードを一括変換したいケースは稀にあるので、持っておいて損はないツールと思います。