#概要
Unityを使用していて、スクリプトのファイル名とクラス名が一致しているにも関わらず
インスペクターに「No MonoBehaviour scripts in the file~」、
アタッチしようとすると「Can't add script component [コンポーネント名] because the script class~」
と表示され、スクリプトをアタッチできなくなった現象が発生しました。また既にアタッチしてあったスクリプトは全てエラーとなってしまいました。
自分はUnity初心者ではありますが、本現象を解決する方法が分かったので、備忘録&誰かの役に立てばいいなぁと思いここに残しておきます。
#筆者の環境
- Unity2019.4.20f1(LTS)
- VisualStudio2017
#解決法
結果的には、
C:\Program Files\Unity\Hub\Editor\2019.20f1\Editor\Data\Tools\RoslynScripts
内の unity_csc.bat ファイルをメモ帳で管理者権限で開き、
@ECHO OFF
set APPLICATION_CONTENTS=%~dp0..\..
"%APPLICATION_CONTENTS%\Tools\Roslyn\csc.exe" /shared %*
exit /b %ERRORLEVEL%
こちらに書き換えることで直りました。
#解決までの流れ
まず検索より、この記事にたどり着きました。
この記事の追記にあった
から
C:\Program Files\Unity\Hub\Editor\2019.20f1\Editor\Data\Tools\RoslynScripts
内の unity_csc.bat ファイルをメモ帳で管理者権限で開き、
記事内で修正すべき文とされている
"%APPLICATION_CONTENTS%\Tools\Roslyn\csc" /shared %*
を探しましたが、見つかりませんでした。
そこでさらに検索を重ね、こちらの記事を見つけました。
こちらも前の公式記事と言っていることは同じなのですが、書き直した後のファイルの中身が記載されていました。そこでその内容を__unity_csc.bat__内に書いたところ、エラーが直りました。
#備考
Unity2019.4.2~系のバージョンでは時々起こる現象のようです。