Unityでの開発中、Unityエディタ上では一切エラーが出ていないのに、Riderを開くと「Cannot Resolve Symbol(シンボルを解決できません)」という赤波線のエラーが大量に表示されて困ったことはありませんか?
今回は、RiderがUnityEngineなどの参照を突如見失ってしまった場合の、最も手軽で確実な解決方法をご紹介します。
なぜUnityでは正常なのにRiderでエラーになるのか?
Unityエディタ側でコンパイルが通っているにも関わらずRiderだけでエラーになる原因の多くは、UnityとRider間のプロジェクトファイルの同期ズレです。
何らかのタイミングでC#プロジェクトの参照情報がうまくRiderに渡らなくなっているだけなので、コード自体にバグがあるわけではありません。この同期状態をUnity側から強制的にリセットしてあげることで解決します。
「Cannot Resolve Symbol」を解決する具体的な手順
Unity側の外部エディタ設定を「一度別のものにしてから戻す」というシンプルな方法で参照を復旧できます。
まずはUnityエディタのメニューから Preferences(Macの場合は Unity > Settings... または Preferences...)を開きます。
左側のメニューから External Tools を選択し、一番上の External Script Editor の項目を確認します。
- 現在「Rider」に設定されているプルダウンをクリックし、一度「Open by file extension」など、別のエディタ設定に変更します。
- 変更後、再度プルダウンを開き、「Rider」を指定し直します。
Riderを再指定すると、Unityエディタ上で「Hold on…」という小さなプログレスダイアログが表示され、プロジェクトファイルの再構築と同期が始まります。
この処理が完全に終了したら、Riderの画面に戻ってみましょう。無事に参照が修正され、画面を埋め尽くしていたエラーが消滅しているはずです。
それでもエラーが消えない場合は?
もし上記のエディタ切り替えを行っても直らない場合は、同じく External Tools の画面内にある Regenerate project files のボタン(または Regenerate project files のチェックボックス横のボタン)をクリックして、プロジェクトファイルを強制的に一から再生成してみてください。大抵の参照エラーはこれで解決します。
まとめ
Riderで突然「Cannot Resolve Symbol」が出たときは焦らず、「External Script Editorの再設定(または再生成)」を試してみてください。
開発環境のトラブルはサクッと解決して、快適な実装作業に戻りましょう!

