Windows環境のUnityで改行文字不一致の警告が発生する

Unity上で作成したスクリプトファイルはMac OS X (UNIX)向けとなっているためWindows環境で編集(特にVisual Studio)していると以下の警告が発生することがあります。

There are inconsistent line endings in the ‘XXXXX’ script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Unitron and other text editors can fix this using Convert Line Endings menu commands.

これはスクリプトファイル内にMac OS X (UNIX)向けの改行文字(LF)とWindows向けの改行文字(CRLF)が混在していると発生します。

スポンサーリンク

なぜ改行文字がMac OS X (UNIX)向けになるのか

そもそも、なぜWindows環境なのにMac OS X (UNIX)向けの改行文字でスクリプトが作成されてしまうのでしょうか。

それは下記ディレクトリに格納されているテンプレートファイルを使用して生成されているからです。

[Unityインストールフォルダ]/Editor/Data/Resources/ScriptTemplates/

  • 81-C# Script-NewBehaviourScript.cs.txt
  • 82-Javascript-NewBehaviourScript.js
  • 83-Editor Test C# Script-NewEditorTest.cs.txt
  • 83-Shader__Standard Surface Shader-NewSurfaceShader.shader.txt
  • 84-Shader__Unlit Shader-NewUnlitShader.shader.txt
  • 85-Shader__Image Effect Shader-NewImageEffectShader.shader.txt
  • 86-C# Script-NewStateMachineBehaviourScript.cs.txt
  • 86-C# Script-NewSubStateMachineBehaviourScript.cs.txt
  • 90-Shader__Compute Shader-NewComputeShader.compute.txt

これらのファイルは全て改行文字がMac OS X (UNIX)向けで作成されています。
そのため、Windowsで編集した際に改行文字が混在してしまうことがあるのです。

警告が発生しないようにする方法はあるのか

いろいろ調べてみましたが、この警告については保存時に改行文字を指定できるエディタを使用して一つの改行文字に統一するしかなさそうです。

テンプレートファイルを直に修正して改行文字をCRLFにするといった対応方法を紹介している人もいましたが、それは根本的な解決になってない気がします。

解決にはなっていませんが、保存時に改行文字を指定できるエディタをいくつかご紹介します。

UnityにビルトインされてるMonodevelopを使用すれば改行コードがCRLFに統一されて発生しなくなるっぽいですが、個人的にVisual Studioのほうが使いやすいんですよね。。。