UnityのコードエディタとしてVSCode(VisualStudioCode)を使っていた時の話。
つい数日前まではいつも通り使えていたのですが、突然Unityの補完が効かなくなってしまいました。

普段ならTransform型が候補に出てくるはず
まず試したこと
まず、よくある解決方法として「.csprojファイルや.slnファイルを消して再生成する」というのがあります。
VSCodeとUnityを一度閉じて、プロジェクトフォルダ内の.csprojファイルと.slnファイルを全て削除します。(後ほど自動生成されるので大丈夫ですが、念の為バックアップは確認。)
その後、Unityを起動してメニューバーの Assets > Open C# Project を選択し、VSCodeを開くという解決方法。
今回の場合、これでは解決しませんでした。
Visual Studio Code Editorの問題
以前このような記事を書きました。
Unityの2019.2以降でVSCodeを使う際は、PackageManagerからVisual Studio Code Editorというパッケージを入れる必要があります。
そのバージョンによっても挙動が変わったりするようなので、前に自分で書いた上記記事を参考に対応してみましたが、今回は解決しませんでした。
.NETFrameworkのバージョンが問題
VSCodeのOUTPUTを開き、OmniSharpのログを見てみるとたくさんのエラーが出ていることに気づきました。
その中のひとつがこれ。
[fail]: OmniSharp.MSBuild.ProjectLoader
The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks
どうやら.NETFrameworkのバージョン4.7.1が見つからない、ということでエラーになっているようです。
書いてあるリンク( https://aka.ms/msbuild/developerpacks ) を開いてみたのですが、Windows用のものしかダウンロードできなさそうだったので、再びいろいろ調べていくと・・・
VSCodeのSettingsで「Omnisharp: Use Global Mono」という項目を「always」にすると良いという話を見つけました。
VSCodeのSettingsを開いて「useGlobalMono」と検索し、出てきた「Omnisharp: Use Global Mono」の項目を「always」に変更します。(元は「auto」になっていた)

変更すると、右下に「設定の変更を反映しますか?」という旨のポップアップが表示されたので、「Restart OmniSharp」をクリック。

VSCode自体は再起動せず、OmniSharpのみ再起動されます。
これによってUnityの補完が効くようになりました!

コメント