本記事は、こんなエラーが出た人の役に立つかもしれません:
The type or namespace name 'UnityEngine' could not found.
The type or namespace name 'MonoBehaviour' could not found.
◤ 環境(2020-12-16時点)
- Windows 10 Home だいたい最新
- Unity 2019.4系~2020.1系
- VS Code だいたい最新(Unity に連携済み)
◤ まえおき
「テキストエディタ VS Code でスクリプトを編集しようと思ったら、エラーが千件単位で出てるんだけど?何なら万単位で出てるんだけど?」となった場合、VS Code で Ctrl + Shift + M
を押し、PROBLEMS
を確認しましょう。おそらく、冒頭のようなエラーコードが混じっているのではないでしょうか?(違ったらごめんなさい。)
調べてみると、Unityを再インストールしなくてはならないと言う記事がヒットすることもありますが、忙しいときにはやりたくないものです。今回はそんなときの対処法について書きます。
(根本解決ではないですが、そもそも本事例は特定のバージョンに依存したバグではないので、とりあえず「ふーん、そういう解決方法もあるんだー」程度に読むと良いです。)
◤ 参考リンク
- VSCodeでUnityの補完が効かなくなったときの解決方法(OmniSharpの問題) – ゆーじのUnity開発日記
https://unity-yuji.xyz/vscode-unity-omnisharp-netframework-mono/
ほとんどのワークアラウンドがこの記事に載っているので、まずはこちらを読むと良いです。
当記事で紹介していない対処法についても、まとめてあります。
◤ 対処法
普段、自分が行っている手順を示します。
そのときによって原因が違うのですが、自分の環境では次の手順のどこかで解決します。
⫸ Phase 1
- まず、プロジェクトフォルダをエクスプローラーで開き、ルートにある
.csproj
と.sln
を全て削除します。(cf. 複数選択の記事) - VS Codeを終了し、Unityエディタでスクリプトファイルをダブルクリックして、再度 VS Codeを立ち上げます。
- (しばらく待ち、正常に稼動すればOKです。エラーが直らない場合は次へ進みます。)
⫸ Phase 2
- VS Code の設定を開き(
Ctrl + ,
する)、omnisharp use global mono
等で検索をかけます。 -
Omnisharp: Use Global Mono
の項目で、ドロップダウンリストを操作します。どの項目に設定するかは任意ですが、この操作を行った際に、OmniSharp Server
の再起動ボタンが表示されます。
これをクリックして、サーバーを再起動します。 -
Ctrl + Shift + U
でOmniSharp Log
を選択し、OUTPUT
を眺めておきます。しばらく待つと、処理が終了します。 - (この時点で VS Code 側において
MonoBehaviour
等のエラーが消えていれば問題ありません。解決しない場合は、次へ進みます。)
⫸ Phase 3
- プロジェクトフォルダを確認し、
.csproj
と.sln
が再生成されていないことを確認します。されている場合は、念のため削除します。 - 必要に応じて、
Ctrl + S
等したうえで、Unityエディタと VS Code を終了します。その後、再度 Unity Hub からプロジェクトを開きます。 - Unityエディタの再起動後、Projectウィンドウから任意のスクリプトを選択し、VS Code を開きます。
- VS Code 側が正常に稼動していることを確認します。
◤ さいごに
以上の手順を踏めば、自分の環境ではエディタがきちんと動作するようになります。
ほかのより良い方法や、根本解決/未然防止の方法を知っている方がいれば、ぜひコメント等で共有していただければと思います。
◤ 追記
「ちゃんと VS Code に拡張入れて、Unity にも Package Manager から Visual Studio Code Editor 入れて、Preferences > External Tools で Generate .csproj for に全部✅入れて、プロジェクトをいったん閉じて Library フォルダ消したあと再起動して、VS Code も再起動かけてるのに、名前空間が怒られるよ~(´;ω;`)」という方は、Visual Code Editor のバージョンが Unity エディタに合っているか確認してください。例えば Unity 2019 では、2020年内リリースのバージョンでないとエラーが出る(最新のパッケージならOKというわけではない)ことを確認しています。