ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

【Unity】C#スクリプトを開いた際に「行の終わりの不具合」が出る問題について

time 2017/09/19

というわけで、最近開発したシステムに「一定確率でDBコネクションが残り続ける」という欠陥を混ぜていたりするりべるんです。WindowsServer側のタスクマネージャーで確認すると、負荷テスト実行後もメモリが上がったまま下がりません。
「中途半端に知識持った人がDIとか考えるとこうなる」といういい例ですね。Unity(DIの方)のインスタンス管理を用いずに、独自でインスタンス生成方法を定義してコケるあたりが香ばしいです。

お仕事繁忙+ネタ不足と「ゴマちゃんフロンティア」的に厳しい日々が続いておりますが、ネタを発信しない期間が長くなるのもよろしくないため、今回はやや無理矢理出した話題です。

C#スクリプト作成後にVisualStudioから編集すると、次回開いた際に「行の終わりの不具合」というダイアログが表示されます。これはUnityのスクリプトテンプレートで使用されている改行コードと、VisualStudioから編集した場合の改行コードとで混ざってしまうのが原因です。
結構前から気になっていたのですが、流石に面倒になってきたので今回対応してみました。

スクリプトテンプレートについて

Unityでスクリプトを作成した場合、初期状態でusingが書かれていたり、Start()Update()が定義されていたりしますが、これはUnityのスクリプトテンプレートから読み込まれています。
大抵は「(Unityインストールディレクトリ)\Editor\Data\Resources\ScriptTemplates」にあるようです。

以下は「81-C# Script-NewBehaviourScript.cs.txt」の中身です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class #SCRIPTNAME# : MonoBehaviour {

    // Use this for initialization
    void Start () {
        #NOTRIM#
    }

    // Update is called once per frame
    void Update () {
        #NOTRIM#
    }
}

他にもJavaScriptやシェーダー系など、作成時の言語に合わせてあれこれ用意されています。

テンプレートの修正

で、今回の問題ですが、テンプレート内の改行コードが「\n(LF)」になっているため、VisualStudioで開いて改行を入れると「\r\n(CRLF)」と混ざってしまいます。
なのでテンプレート側をVisualStudioに合わせて\r\nにしてしまいます。サクラエディタあたりで正規表現を使って置換してしまいましょう。
読み取り専用になっている場合、プロパティのセキュリティタブで適当にアクセス権を付与する必要があります。

これで今後は「改行コードが~」と言われることはなくなるはず。
ついでにタブが入っているのも気になるので、スペースに置き換えてしまいました。

VisualStudio2017上から改行コードを修正する方法

「VisualStudio 2016」までは「ファイル→保存オプションの詳細設定」みたいな項目から改行コードを変更できたのですが、2017でなくなっていました。
やや面倒ですが、「ファイル→名前を付けて保存→エンコード付きで保存」を選択後に表示されるダイアログから変更することができます。

毎回行うのは面倒なので、素直にスクリプトテンプレートを修正したほうが手っ取り早いかと思います。

down

コメントする