はじめに
AI全盛になってきて、UnityプロジェクトもVSCodeで扱えた方がAIとの連携がしやすいと思うようになりました。ですが、Packageバリバリのプロジェクトを開いている場合、パッケージ側のコードなどがいい感じにVSCodeで閲覧できない現象に行き当たりました。これを解消した話です。
起こっていた現象
VSCodeで、プロジェクト内のソースコードから、パッケージ側のメソッドの定義を見に行くと、以下のようなパスのファイルが開きました。
/var/folders/何ちゃら/DecompilationMetadataAsSourceFileProvider/何ちゃら/クラス名.cs
このファイルは、コメントなどの入っていない、バイナリから生成したと思われるC#ソースコードになります。このコードから、さらに該当パッケージ内のクラスを辿ったり、定義をみたりすることはできませんでした。これは不便です。
例えばRiderではパッケージキャッシュ配下に実際に存在するファイルを開いてくれるので、パッケージの内容全体を調査することができます。
対策方法
Unityによって生成されるプロジェクトファイル(.csproj)に、該当パッケージの内容が含まれるようにする必要があるようです。
このため、Settings 内の External Tools で、この辺りのチェックを入れるのがポイントです。(Unity 6.0の場合)
以下の例「これをON」は、UPM管理下のパッケージの場合です。Git参照だったりtarballだったりによって、チェックする場所が異なります。
この設定により、パッケージキャッシュ (プロジェクトフォルダ/Library/PackageCache/ )配下のソースコードを開いてくれるようになります。これによって、パッケージ全体のスクリプトや構成などを容易に閲覧することができます。また、さらに定義などを潜って調べたりすることもできます。
なお、通常左側にある Explorer View には開いた該当ファイルだけが表示されます。エディターView上部にあるパスのところから、周辺ファイルを確認することができます。
そのほか基本的なこと
UnityでVSCodeを利用できるようにする方法は、各所に書かれていますが以下のような感じです。
- Package Managerから
Visual Studio Editorパッケージを追加、更新 - Settings内のExternal Toolsで、External Script Editor ドロップダウンで
Visual Studio Code[...]を選択 - VSCodeに
Unity拡張機能を追加- C# Dev Kitも入る
- 該当バージョンの
.Net SDK(今回だとv9.0.x) をインストール - VSCodeの
Reload Windowコマンドまたは再起動で変更を反映
