LoginSignup
11
9

More than 3 years have passed since last update.

【Unity:PackageManager】自作Packageの作成と追加

Last updated at Posted at 2020-07-26

自作Packageの作成とプロジェクトへの追加
ドキュメントや記事はあるんだけど古かったりイマイチわからなかったりするので
(多分)わかりやすいようにがんばってまとめてみる

検証:Unity2020.1

GitHub、SourceTree使ってます

自作Package作成

1. GitHubにリポジトリ作成

 適当に新規リポジトリ作る
 https://github.com/username/sample_package.git

 ※結果的にリポジトリはPublic/Privateどちらもパッケージ追加できたが
  Privateは自分自身がSSHkey登録してるからできてるだけかも(普通に落とせたらダメな気がするし)

2. プロジェクト作成

 1のリポジトリをSourceTreeでクローンする
 そこにUnityの新規プロジェクト作る

 例:クローンした「sample_package」に同名の「sample_package」でプロジェクト作成
  sample_package
  ┗ sample_package
   ┣ Assets
   ┣ ...
   ┣ Packages
   ┣ ...

3. Packagesに自作Packageフォルダ追加

 フォルダ階層はなんでもいいんですがPackages配下に入れておくとUnityエディタ上でファイルの設定ができるので多分推奨な気がする

 例:Assetsフォルダと同じ階層にPackagesフォルダがあるので適当に自作パッケージ名のフォルダ追加
 sample_package
  ┗ sample_package
   ┣ Packages
    ┣ sample ←追加
    ┣ manifest.json
    ┣ packages-lock.json

4. package.json追加

 先ほど作ったsampleフォルダ配下に「package.json」ファイルを作成
 sample_package
  ┗ sample_package
   ┣ Packages
    ┣ sample
     ┣ package.json ←追加

package.json
{
  "name": "com.sample.samplepackage",
  "displayName": "SamplePackage",
  "version": "0.1.0",
  "unity": "2020.1",
  "description": "description.",
  "author": {
    "name": "SamplePackage"
  }
}

色々とパラメータはあるみたいだけどとりあえず最低限必要そうなものだけ記載
Unity上で設定もできます(Packagesフォルダ以下に含まれている必要がある)
package_manager_03.png

5. アセンブリファイル追加

 package.jsonと同じフォルダに
 「Runtime」「Editor」フォルダを追加
 その中にアセンブリファイルと適当にスクリプトを追加
  sample_package
  ┗ sample_package
   ┣ Packages
    ┣ sample
     ┣ package.json
     ┣ Runtime ←追加
      ┣ SampleRuntime.cs ←追加
      ┣ Sample.SamplePackage.asmdef ←追加
     ┣ Editor ←追加
      ┣ SampleEditor.cs ←追加
      ┣ Sample.SamplePackage.Editor.asmdef ←追加

例として「Runtime」「Editor」を追加してますが、ランタイムのみ、エディタのみとかであればそれぞれ不要です
それ以外のアセット(テクスチャとかシーンとか)もpackage.jsonのフォルダ以下に追加すればパッケージに含まれます
ちなみに、アセンブリファイル(.asmdef)があればフォルダ名はなんでもいいです
が、Unity公式のパッケージがそういう命名規則でやってるので揃えるのがわかりやすくて無難

Sample.SamplePackage.asmdef
{
    "name": "Sample.SamplePackage",
    "references": [],
    "includePlatforms": [],
    "excludePlatforms": []
}
Sample.SamplePackage.Editor.asmdef
{
    "name": "Sample.SamplePackage.Editor",
    "references": [
        "Sample.SamplePackage"
    ],
    "optionalUnityReferences": [],
    "includePlatforms": [
        "Editor"
    ],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": []
}

「references」がそこそこ重要で
他のパッケージに依存してる場合はここに追記しないといけない
あえてエディタのアセンブリに「Sample.SamplePackage」が追加してますが、これで自作のランタイムスクリプトに依存してることになります
Unity公式のパッケージの依存がある場合はこんな感じ

Sample.SamplePackage.asmdef
{
    ...
    "references": [
        "Unity.InputSystem", InputSystem使用してる場合
        "Unity.RenderPipelines.Universal.Runtime" URP使用してる場合
    ],
    ...
}

というか依存してるのに記載がない場合はエラー出るので気づくと思います

記載するのはアセンブリファイル名です
プロジェクトの「Library/PackageCache」に使用してるパッケージが含まれているので
エラーになってるパッケージの「○○.asmdef」を探して○○をreferencesに記載すればOKです

とか説明しておいてUnity上で設定もできるので依存関係はこっちで設定した方が楽です(Packagesフォルダ以下に含まれている必要がある)
package_manager_04.png

6. プッシュ

 これでPackage側の準備は完了
 作成したファイル等をGitにプッシュしておいてください
 各ファイルの.metaファイルもプッシュ必須です
 無いと以下Package追加時にエラー出ます

自作Package追加

1. PackageManagerから追加

 新規でも既存でもいいんですが適当にUnityプロジェクト開いてPackageManager開いて下さい
 左上に+ボタンがあるので画像の「git URL...」を選択
 package_manager_add.png
 URL入力して「Add」で追加できます
 
 URLは最初に作成したリポジトリ(※下記は例で実際は自身で作成したURLです)
 https://github.com/username/sample_package.git
 なんですが、これだとリポジトリ直下にpackage.jsonを配置した場合なので
 
 今回のように独自のフォルダ階層の場合は
 sample_package
  ┗ sample_package
   ┣ Packages
    ┣ sample
     ┣ package.json ←ここ

 https://github.com/username/sample_package.git?path=/sample_package/Packages/sample
 のようにpathで階層指定する必要があります

2.完了

 ここまで問題なくできればPackageManagerに自作パッケージが追加されているかと思います
 package_manager_01.png
 package_manager_02.png

 とりあえず追加までに最低限必要な作業だけやったんですが
 他にも「LICENSE.md」とか「CHANGELOG.md」とかちゃんとパッケージとして配布するならあった方がいい作業もあるんですが、あとは細かいファイルや定義追加なので公式のドキュメント見てもらえればと
 https://docs.unity3d.com/Manual/CustomPackages.html

 ちなみに…
 Previewパッケージは2020以降デフォルトで表示されないのでProjectSettingsから表示してあげてください
 依存関係の表示設定もできます
 pakagemanager.png

まとめ

以前に比べ2020で大分便利になったと思うんですが
今後まだ改良されていくとは思います
サンプルフォルダの追加とか…
色々調べつつではあるのでそのうち追記や別記事書くかもです

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9