Unity:通过 Git URL 导入的包 summary 在 IDE 中不显示的原因及解决方法
Unity:Git URLで導入したパッケージのsummaryがIDEに表示されない原因と対処法
はじめに
こんにちは、空音です!
普段はUnityやUnreal Engineを使ってゲーム開発をしている学生です。
自作ライブラリをGit URLで別のプロジェクトに導入したところ、ソースに書いたはずのsummary(XMLドキュメントコメント)が、IDEの補完に表示されないことに気付きました。
この記事では、その原因と、表示させるための設定を紹介します。
症状
ライブラリのソースには、次のようにsummaryを書いています。
/// <summary>
/// 変更をファイルに書き込む。ファイルの書き込みは別スレッドで行う。
/// </summary>
/// <remarks>
/// 書き込みに失敗しても例外は投げず、コンソールにエラーを出して<see cref="FlushResult.Failed"/>を返す。
/// そのため、awaitせずに呼び捨てにしても、失敗に気付けなくなることはない。
/// 失敗した場合、変更は未保存のまま残り、次の呼び出しで再び書き込みを試みる。
/// </remarks>
/// <returns>書き込み結果。</returns>
public Task<FlushResult> FlushAsync();
ライブラリを開発しているプロジェクトでは、この説明が補完やマウスオーバーで表示されます。
ところが、Git URLで導入した別のプロジェクトでは、何も表示されません。

原因:パッケージが.csprojの生成対象になっていない
RiderやVisual Studioは、Unityが生成する.csprojを通して、プロジェクトのソースコードを読んでいます。
ただし、Unityはすべてのパッケージを.csprojにするわけではありません。どの種類のパッケージを.csprojにするかは設定で決まっていて、既定ではGit URLやレジストリから導入したパッケージは対象外になっています。
対象外のパッケージは、IDEから見るとビルド済みのDLLでしかありません。
対象のパッケージ
Unity → .csprojを生成 → IDEがソースを読む → summaryが表示される
対象外のパッケージ
Unity → DLLだけ → IDEはDLLを参照する → summaryが表示されない
summaryはDLLの中には含まれません。本来は別のXMLファイルに書き出しておく必要があるため、DLLだけを参照しているIDEには表示できないというわけです。
対処法:Git packagesを生成対象に含める
-
Edit > Preferences(macOSはUnity > Settings)を開く -
External Toolsを選ぶ -
Generate .csproj files for:の中のGit packagesにチェックを入れる -
Regenerate project filesを押す

これで、Git URLで導入したパッケージのソースがIDEのソリューションに追加され、summaryが表示されるようになります。

Input Systemのように、Unityのレジストリから導入したパッケージの説明も見たい場合は、Registry packagesにもチェックを入れます。
ただし、DLLで配布されているパッケージは、この設定を有効にしてもソースが追加されないため対象外です。
定義へのジャンプも元のソースになる
この設定を有効にすると、定義へのジャンプでも、DLLから復元した内容ではなく、元のソースとコメントが開くようになります。ライブラリの中身を読みたいときにも便利です。
注意:パッケージのソースは編集しない
Git URLで導入したパッケージのソースは、プロジェクトのLibrary/PackageCacheに置かれています。
生成対象に含めるとIDEから編集できてしまいますが、ここを書き換えても、Unityによって元に戻されます。
ライブラリを修正したい場合は、ライブラリを開発しているプロジェクト(リポジトリ)のほうで編集してください。
ライブラリを公開する側にできること
この設定は利用者それぞれの環境のものなので、ライブラリ側から変えることはできません。
そこで、ライブラリのREADMEには、次のような一文を入れておくことをおすすめします。
- **IDE での説明の表示**:Git URL で導入した場合、既定ではエディタの補完に API の説明(XML ドキュメントコメント)が表示されません。`Edit > Preferences > External Tools` の `Generate .csproj files for:` で `Git packages` にチェックを入れ、`Regenerate project files` を押すと表示されます。
せっかく丁寧に書いたsummaryも、利用者のIDEに表示されなければ読んでもらえません。ライブラリを公開している方は、READMEに書いておくと親切だと思います。
おわりに
- Unityは、既定ではGit URLやレジストリから導入したパッケージの.csprojを生成しない
- そのためIDEはDLLだけを参照し、summaryを表示できない
-
External ToolsのGit packagesにチェックを入れ、Regenerate project filesを押すと表示される
最後まで読んでいただき、ありがとうございました!
InputとUpdate 昨日の知識を、今日の技術へ
来源:zenn · 游戏开发社区 · zenn.dev