もっと詳しく

わたすけです。
Unity、好きですか?わたしは嫌いです。

Unityといえば、VisualStudioと組み合わせて開発するのが一般的ですよね。VSインストーラにも「Unityによる開発」という項目が存在します。

ただ、C++はもちろん、Qt Creatorで書かれることが多いQtや、Android Studioがよく使われるFlutterなどもVSCodeで書いている人は少なくないと思います(自己紹介)。
そのような人にとって、Unity開発もVSCodeで!と考えるのは自然なことでしょう。

ただ、VSCode、うまく動かない人も中にはいるようです。「うまく動かない」といっても発生する現象はほぼ1つのようで、「補完が効かない」という最悪の状況になってしまいます。

自分もその一人でした。ただ、「Unity VSCode 補完」で検索して、様々な先人たちの試した内容を実践しても、全く解消されませんでした。

ということで、今回は、VSCodeでUnity関連の補完が出来なくなった時、自分がやったことを書いておこうと思います。

苦しんでいる様子

大前提

VisualStudio Communityをインストールしておきましょう。VSCodeで開発する人も.NET SDKのインストールで必要になるらしいです。インストール時は「Unityによる開発」にチェックを入れておきましょう。
これによっておそらくUnity Hubがインストールされるので、ライセンス認証及びUnityのインストールを行ってください。LTSがいいと思います。

VSCodeには、C#の拡張機能をインストールしておきましょう。「Debugger for Unity」があるとVSCode上でブレークポイントを設定できていいらしいので、これも入れましょう。

Unity上で設定を開き、「External Tools」カテゴリにある、「External Script Editor」を「Visual Studio Code」しておきましょう。

発生した現象

VSCodeで補完が出来ない。例えば「Trans」と入力してCtrl+Spaceを入力すると「Transform」が候補に現れるはずですが、出ませんでした。

UnityのC#プロジェクトを開いた時、Omnisharpが「.NET Framework 4.7.1が見つからないからここからDLしてね」みたいなエラーを吐きます。

1 .NET SDKをインストール

エラー文で指示されたページに飛んで、SDKをインストールします。

変わりませんでした。それどころかPowerShellでdotnet --list-sdks コマンドを実行しても、4.7.1は見当たりませんでした。

2. Omnisharp:useGlobalMonoを変更

Monoをインストールします。

VSCodeの設定を開き、検索欄に「useGlobalMono」と入力し、出てきた項目を「always」に変更します。

変化なし。

3. APIレベルの変更

このページを参考にします。Edit→Project Settingsを開き、左からPlayerカテゴリを選択。
「API Compatibility Level」を見つけて、「.NET 4.x」を選択します。

やはり変わらず。

4. csprojのリセット

とりあえずVSCodeを閉じ、Edit→Preferenceを開きます。External Toolsカテゴリを選択し、「Generate .csproj files for:」の下にチェック項目があるので、全てチェックを入れます。

そして、Unityのプロジェクトがあるフォルダを開き、拡張子が .csproj または .sln のものを削除します(再生成されますが、バックアップを取っても良い)。

その後、VSCodeを起動し、補完ができるかどうか確かめます。

やっぱり駄目でした。

5. VisualStudioとUnityの再インストール【解決】

もう諦めて、VisualStudio CommunityとUnityをアンインストールして、再インストールしました。

これで駄目なら諦めようと思っていたのですが、うまくいきました。

終わりに

なんとかなおってよかったです(こなみ)。
というか、Unityに限らず困ったときの最終手段は再インストールだなぁと感じました。

よかったね

The post Unity+VSCodeでどうしても補完が効かないときに試したこと first appeared on FascodeNetwork Blog.