30
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityプロジェクトの自作パッケージ依存性管理をnpmで行う

Last updated at Posted at 2017-10-15

はじめに

Unityで複数のプロジェクトを進行していると、共通の処理をライブラリとして切り出したくなることがよくある。公開できるものだったらAsset Storeに出せば、まあそれっぽい感じにはなるわけだが、privateな状態でやろうとすると、Unity自体にはそういったパッケージ管理の仕組みはないので1、自作するか、サードパーティのものを使わなくてはいけない。

要件としては、
・gitのレポジトリ(プライベートレポジトリ含む)で公開されているパッケージを簡単にインポートできること
・依存するライブラリのバージョン管理ができること(ローカルのバージョンと最新を比較して、バージョンが上がっていればアップデートするなど)
・MacでもWindowsでも使えること
・パッケージを公開する側で行うべき処理がなるべく少ないこと
であるが、これらを満たすツールとして、node.jsのライブラリ管理で使われるnpmを使うのが便利だという結論に落ち着いたので、その内容を記す。

npmを使ったUnityプロジェクトのパッケージ依存性管理

unity3d-package-syncer というnodeモジュールが公開されているので、それを使う。元々npmには依存ライブラリのバージョン管理機能は備わっているが、このモジュールはnpmが使う node_modules ディレクトリとUnityのディレクトリを同期してくれる。

以下手順を解説する。

パッケージを公開する側の作業

unity3d-package-syncer は gitのrootに assets (先頭は大文字でもよい)ディレクトリがあることを前提として、その中身を使用する側のUnityプロジェクトにインポートするため、インポートされる必要のあるファイルは全て assets 以下に突っ込んでおく。

また、npmの習わしに従って、プロジェクトのrootディレクトリにpackage.jsonを配置する必要がある。
中身は最低限nameとversionくらいあれば十分だ。

package.jsonの例

{
  "name": "my-unity-package",
  "version": "0.0.1"
}

後は githubのプラベートレポジトリなり、private npmなりにプッシュしておけばよい。

https://github.com/rotorz/unity3d-package-example/ で実際の例が見られる。

パッケージを使用する側の作業

使用する側では、package.jsonの dependencies の項目に unity3d-package-syncer と使用したいパッケージの名前とバージョン(npmで公開している場合)もしくはチェクアウト先のURLを追加する。以下の例では
https://github.com/rotorz/unity3d-package-example/ で公開されているunityパッケージを追加している。

{
  "name": "my-unity-project",
  "version": "0.0.1",
  "description": "",
  "scripts": {
    "sync": "unity3d--sync"
  },
  "dependencies": {
    "unity3d-package-syncer": "^1.0.1",
    "unity3d-package-example": "git@github.com:rotorz/unity3d-package-example.git"
  }
}

このpackage.jsonをUnityのrootディレクトリ(Assetsディレクトリがあるディレクトリ)に配置し、以下のコマンドを実行する。

$ npm install --save unity3d-package-syncer # unity3d-package-syncerをインストール
$ npm run sync

これでunity3d-package-exampleの中身がUnityのAssetsディレクトリにインポートされたはずだ。
以降は npm run sync を実行するだけで、自動的に最新にアップデートされる。

まとめ

npm は nodeのプロジェクト以外で使っても意外と便利。

  1. https://unity3d.com/jp/unity/beta/unity2017.2.0b2 によると Unity 2017.2.0から順次 Package Managerの仕組みが導入されるようですが、2017年10月15日現在は使用できません。

30
19
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
30
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?