📘

【Unity×Cursor】csprojが再生成されない問題を解消!

に公開

はじめに

初めての方も、そうでない方もこんにちは!
現役ゲームプログラマーのたむぼーです。
自己紹介を載せているので、気になる方は見ていただければ嬉しいです!

https://zenn.dev/tmb/articles/1072f8ea010299

Cursorについて

Cursorは、AIが統合された次世代型のコードエディタです。VSCodeライクな操作感で、開発の生産性を大きく向上させてくれるツール。AIによるコード補完や修正提案がサクサク使えます。

導入についてはこちら

https://zenn.dev/tmb/articles/1b44f02034b4bd

csprojが再生成されずお困りではないですか?

UnityでCursorを外部エディタとして使っていると
「Unityで問題ないのに、Cursorではエラーが出る・・・」
usingは定義してるのに、処理が使えない・・・」
そんな悩みありませんか?

実はその原因、.csproj(C#プロジェクトファイル)が正しく生成されていないからなんです。

原因:Unityの「外部ツール設定」が不完全

UnityでCursorを使うときに、External ToolsCursor.exeを追加する場合だと
Generate .csproj files forという設定が出ません。

理由:Unityが「公式サポートしているIDE」しか認識しない仕様

Unityは、以下の一部の外部エディタに対してのみ
csproj の生成オプションを表示するように設計されています:

エディタ 表示されるか
Visual Studio ✅ はい
Visual Studio Code ✅ はい
JetBrains Rider ✅ はい
Cursor ❌ 表示されない

☝ Unityはエディタ名を元に、「これは〇〇のエディタだ」と判断して項目を出しています。
Cursorは独自のEXE名のため、Unityにとっては「未知のエディタ」でしかありません。

解決:Cursorを公式IDEとUnityに誤認させる

Unityは「公式サポートしているIDE」しか認識しない仕様ということは
つまり、Unity側でこれは「公式サポートしているIDE」だ!ってなればいいわけです。

  1. VsCodeがどうなってるのか確認する
    私の場合、VsCodeのexeはこちらにありました。
    C:\Users\ユーザー名\AppData\Local\Programs\Microsoft VS Code

    VsCodeのexeの名前はCode.exeですね

  2. Cursorがどうなってるのか確認する
    私の場合、Cursorのexeはこちらにありました。
    C:\Users\ユーザー名\AppData\Local\Programs\cursor

    Cursorのexeの名前はCursor.exeですね
    ※このCursor.exeというIDEがUnityでは、サポートされてない

  3. CursorをVsCodeとして認識させる
    Cursor.exeを複製する
    複製したCursor - コピー.exeをリネームして、Code.exeに書き換える

    Code.exeにリネームした、exeをUnityで認識させる
    「Edit」→「Preferences」→「External Tools」→「External Script Editor」→「Browse...」
    C:\Users\ユーザー名\AppData\Local\Programs\cursorに複製で作ったCode.exeを選択
    すると、Visual Studio Code [0.48.8]ってのが増える
    ※ちなみに、Visual Studio Code [1.99.2]が本家

    UnityがCursorをVsCodeとして認識してくれました!

    Generate .csproj files forという設定も出て、
    スクリプトをダブルクリックでもCursorが開くようになってます

さいごに

今回は、Cursorで .csproj が再生成されないというニッチな問題に焦点を当てましたが、
実際にこの現象で悩んでいる方も多いのではないでしょうか?

今回の方法で、AI補完も含めた快適なUnity開発環境を整えられると思います。
Unityが将来的にCursorを公式サポートしてくれることを期待しつつ、
少しでも参考になれば嬉しいです!

もし他にも便利なやり方やTipsがあれば、ぜひコメントで教えてください~!

Discussion