渋谷ほととぎす通信

エンジニア社長によるUnityとAIのブログ & エンジニアの生存戦略

【Unity】manifest.jsonを使わずPackageをローカルで修正・更新・管理する方法

【Unity】manifest.jsonを使わずPackageをローカルで修正・更新・管理する方法

こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • パッケージをローカルで修正できない?
  • パッケージって修正しても戻っちゃう?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Unityはさまざまな機能が「パッケージ」という形で提供されています。

    例えば次のようなパッケージです(ほんの一部)。

    • TextMeshPro
    • TImeline
    • Unity UI
    • Test Framework

    などなど。

    これらのパッケージは大きく分けて2種類のインストール方法があります。

    1. PackageManagerからインストール
    2. manifest.jsonを直で書き換え

    どちらも結果的に「manifest.json」を書き換えます。

    パッケージ管理されて便利な一方困ることも発生しました。それはパッケージの修正です。通常インストールしたパッケージの中身は編集してももとに戻ってしまいます。

    そこで本記事ではパッケージをローカルで管理する方法を紹介します。特に自作パッケージをゲーム開発しながら更新したい方にはピッタリの記事になると思います。ぜひ最後まで読んでみてください。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    Packageは編集しても元に戻ってしまう

    Package ManagerでインストールしたファイルはProjectウィンドウ内のPackagesフォルダにパッケージごとに格納されます。

    【Unity】manifest.jsonを使わずPackageをローカルで修正・更新・管理する方法_0

    一見この中のファイルを編集したらそのまま反映されると思ってしまいがちですが、そうは問屋が卸しません。

    修正してもパッケージの更新タイミングでもとに戻ってしまいますし、そもそもgitにコミットしてメンバー間で共有することもできません。

    通常Package Managerでインストールしたパッケージは編集できないということを覚えておきましょう。

    ローカルで更新していきたいパッケージの管理方法

    結論、パッケージ一連のファイルを「Packagesフォルダ」に追加することで可能です。

    そう Packagesフォルダにパッケージファイル一式を放り込むだけ でパッケージとして認識されます。
    ※【重要】manifest.jsonは書き換わりません

    パッケージをこのフォルダーの下に置くと、Package Manager は、プロジェクトマニフェストの参照に関係なく、自動的に 埋め込みパッケージ として解釈します。

    Unity公式マニュアルに記載の通り「埋め込みパッケージ」として認識されるようです。

    埋め込みパッケージの運用方法

    埋め込みパッケージを使うメリットについて考えていきます。埋め込みパッケージのメリットはなんといっても修正、更新が可能という点です。

    開発途中のパッケージは埋め込みパッケージにして開発を進めていくのが良さそうです。

    完成したら埋め込みパッケージから通常のPackage Manager経由でインストールすると良いでしょう。

    埋め込みパッケージの注意点

    Packagesに格納するだけで便利な埋め込みパッケージですが、注意点もあります。追加するフォルダはパッケージである必要がある点です。

    パッケージにはルールが決まっていて、package.jsonファイルを含む必要があります。

    例えばオオバが作成したUniGitHistoryViewerというパッケージがGitHubにアップロードされていますが、こちらはUnityプロジェクト丸ごとアップロードされています。

    実際のパッケージは Assets/UniGitHistoryViewer です。UniGitHistoryViewer フォルダをPackagesフォルダに追加しないとパッケージとして認識されない点に注意してください。

    manifest.jsonを書き換えてローカルパッケージの管理

    もしパッケージがUnityプロジェクトを含んでいた場合、manifest.jsonを使ってローカルパッケージ化する方法もあります。

    この場合、Packagesフォルダではなく、MyPackagesなど別のフォルダを新規で作成して管理します。

    【Unity】manifest.jsonを使わずPackageをローカルで修正・更新・管理する方法_1

    Package Managerから Install package from disk を選択してパッケージ内のpackage.jsonを選びます。

    【Unity】manifest.jsonを使わずPackageをローカルで修正・更新・管理する方法_2

    するとローカルパッケージとして認識されます。

    まとめ:Unityのパッケージをローカルで管理・修正する方法

    Unityのパッケージは通常、Package Managerで管理されており、直接編集しても元に戻ってしまう仕様になっています。しかし、「埋め込みパッケージ」 を利用すれば、ローカルで自由に編集・更新が可能になります。

    埋め込みパッケージの設定方法
    • Packages フォルダ内に、package.jsonを含むパッケージフォルダ を配置する
    • Unityが自動的に認識し、パッケージとして扱う
    • manifest.jsonは変更不要
    ローカルパッケージとして管理する方法
    • Unityプロジェクト全体を含む場合は、manifest.json を書き換え
    • Package Manager の「Install package from disk」機能を使用
    ポイントのまとめ
    1. 通常のパッケージは直接編集できない
    2. 埋め込みパッケージとしてPackagesフォルダに配置すれば編集可能
    3. package.jsonが必須
    4. Unityプロジェクトを含む場合はmanifest.jsonを使ってローカル管理

    埋め込みパッケージを活用すれば、自作パッケージの開発をスムーズに進められます。開発中のパッケージを随時修正しながら動作確認したい方は、ぜひ試してみてください!

    オススメ記事
    検証環境
    • Unity6000.0.32f1