F12で関数ジャンプできない問題
VSCodeで関数ジャンプをする際に,関数の文字列に対してF12を押すと No definition found for というようなエラーが出て参照できない時がありました.
結構調べて何とか解決方法を見つけたので解説します.
テストした環境
- Unity 2019.4.24 / 2020.3.10
- Microsoft VS Code 1.59.0
色々試した結果,バージョン関わらず 小さいプロジェクトの場合は,なぜか F12 でのジャンプはできなさそう. わかる方いたらお知らせください.
解決方法
1. 問題点を探る
まず,VSCodeでエラーを吐いている可能性があるので, View -> Output を押し,OmniSharp Logのタブを選択して,エラーを見ます(バージョンなどによって場所が違うので少し注意)
すると,自分の場合は以下のように 「.NETFrameworkNETFrameworkv4.7.1 のフレームワークが見つからないのでhttps://aka.ms/msbuild/developerpacks からダウンロードしろ」と言われます.
Error: 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
2. .NETFrameworkNETFrameworkv4.7.1をダウンロード & インストール
ということで https://aka.ms/msbuild/developerpacks のページで4.7.1と検索し,そこのリンク(自分の場合は,.NETFrameworkNETFrameworkv4.7.1 )のリンクへと行き,「Download .NETFrameworkNETFrameworkv4.7.1 Developer Pack」をクリックしダウンロードしました.
3. プロジェクトやエディタの設定ファイル的なものを削除
VSCodeとUnityを閉じた後,プロジェクトのフォルダにある .vscode/, .csproj, .sln 関連のファイルやフォルダ(UnityやVSCode起動時に勝手に生成される)をとりあえず消し,再度起動をします.
4. Unity Attach Debuggerを選択する
Ctrl + Shift + P で Unity Attach Debuggerが選択されているのを確認。選択されてない場合は,「許可する」ボタンが出るので許可をする。
すると無事に,F12で関数ジャンプができました~
X. これでも解決できない場合
- プラグイン, 「C#」が入っていることを確認
- Unityのプロジェクトで
Edit > Preferencesを選択し,External ToolsのExternal Script EditorがVisual Studio Codeになっていることを確認. - Unityの
Assets > Open C# Projectを選択し、VSCodeを開き直す。 - 一応
.vscode/,.csproj,.sln関連のファイルなどを逐一削除して確認
VSCodeとUnityの相性どんだけ悪いねん..
余談
Ctrl + Shift + F12 を押すと,以下のようにジャンプはせずに詳細を見ることも可能です.
関数ジャンプ後,Alt + - を押すとUndo(Navigate Backwards), Alt + + を押すとRedo(Navigate Forwards) ができます.
参考
- Unity2018.3以降でVSCodeが使えない(.Net 4.xにてアセンブリが読み込まれない)
- UnityでVSCodeを使用中、関数ジャンプや参照ができない!の解決方法
- VSCode + Unityでインテリセンスが効かない時の対処方法
- VSCodeでなるべくマウスを使わない開発環境をがんばる
最後に
ぜひ、フォローよろしくお願いいたします!


