Cross Technology

Unity、VR、MR、ARを中心とした技術ブログ

MacのVisual Studio CodeでUnityのコード補完が突然できなくなったときの対処法

以前紹介したように、私はMac版Unityで開発する時は、Visual Studio Codeを使っています。

MacのUnityでVisual Studio Codeと連携させる方法(1) - Cross Technology

MacのVisual Studio CodeとUnityの連携方法(2):コード補完(Extention更新) - Cross Technology

(2)の記事で、インテリセンス(コード補完)が効かなくなったときの対処方法を書きましたが、先ほどそれでも対応できなかった(結果的には勘違いも含みます)があったので、参考までに紹介します。

なお、以下の環境で動作を確認しています。

  • Mac OS X 10.11.6
  • Visual Studio Code 1.7.1
  • VSCode.cs v2.7 ( (2)のときはv2.6)

1. 何が起こったか?

Unityのプロジェクトを別のフォルダにコピーしてから、Visual Studio CodeでUnityC#のインテリセンスが効かなくなった、というものです。

この記事で紹介した方法により、Legacy C# SupportのExtensionが入っていることは確認済みです。

2. 原因

プロジェクトを別の名前のフォルダにコピーしたことで、slnファイルが二つ生成されてしまい、Visual Studio Codeが新しいslnファイルを読み込んでいたためでした。

例えば、UnityProjectAという名前のプロジェクトを作ったとします。そうすると、UnityProjectAの階層に、slnファイルやAssetsフォルダなどが生成されます。

UnityProjectA / UnityProjectA.sln

今回、途中からgit管理したくなったので、UnityProjectAフォルダの中身をコピーしてUnity_gitという別フォルダの中に入れました。このように配置すると、Unity_gitフォルダには、UnityProjectA.sln以外にUnity_git.slnという別のslnファイルが生成されます。

Unityで開発を続ける分には問題ないのですが、Visual Studio Codeでは、Unity_git.slnを読んでいました。

3. 対処方法

Visual Studio Codeで、元のプロジェクト名のslnファイルを読み込むように変更します。以下、手順を解説します。

Visual Studio Codeの右下を見ると、読み込んだプロジェクトのslnが表示されています。

Visual Studio Codeの右下に表示されている、現在読み込んでいるslnファイル名

ここをクリックすると、画面上部にslnの選択画面が出ます。

Visual Studio Codeでslnを選択する画面

ここで、フォルダコピー前のslnを選択すると、インテリセンスが効くようになります。

4. 終わりに

こんな使い方をする方はあまりいないかもしれませんが、せっかくなので整理してみました。今回の私のように、途中からgit管理したくなったときは、ご参考ください。