Windows版のVSCodeでUnityのスクリプトの変数などの情報がマウスホバーしても表示されなくなった

May 29, 2022

先日、突然Unity(バージョンは2020.3.0)からVSCodeで開いたスクリプトのクラスにマウスカーソルをあてても情報が表示されなくなってしまい躓いたのでメモを残します。

結論から書きますと、VSCodeで設定を開き(ファイル→ユーザー設定→設定)、usemodernnetで検索すると出てくる「Omnisharp: Use Modern Net」(下の画像)のチェックを外すと以前のように、クラスやメソッドの情報が表示されるようになりました。参考にしたのはこちらのページです。ちなみに私が使用しているVSCodeではこのページのようなエラーは一切出てきませんでした。

Omnisharp: Use Modern Net

このC#の拡張モジュールのページのアナウンスを見たところ、「If you still need Unity or .NET Framework support, you can set omnisharp.useModernNet to false in your VS Code settings and restart OmniSharp.」と書いてあったので、いつのまにか拡張モジュールの仕様が変わっていたようです。

.NET Frameworkについて疎くてなぜUse Modern Netを有効にするとだめなのかが今一つピンとこなかったので少し調べてみたのですが、こちらのページによると、Unityはmonoという.NET Framework互換のコンパイラやランタイムを含むプラットフォームを使っているようです。ただ、.NET Frameworkはすでにリリースが終了しており、現在はその後継の.NET(以前のブランド名は.NET Core)に移行しているとのこと。名称が似ているのでややこしいですね・・。.NET Framework、.NET Core、Monoの違いはこちらのページが参考になりました。つまり、Unity(2020.3.0)の使用している.NET Frameworkはかなり前にリリースされたもので、最新の.NETとは似て非なるもの、ということですね。今後、Unityが最新の.NET 6をサポートするかについても調べてみましたが、こちらを見た感じではまだまだ先のような感じですね。。