テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】自作のパッケージを追加したりパッケージを一覧から検索したり…PackageManagerがUnity 2018.3で変化したポイント

今回はUnity 2018.3でPackageManagerが変化した幾つかのポイントです。

 

 

Package Managerに自作パッケージの追加が可能に

Unity 2018.3からPackageManagerに自作のパッケージを追加出来るようになりました。今までもpackage.jsonを拡張すれば可能でしたが、それが機能としてちゃんと追加された形です。

 

synamon.hatenablog.com

実際の手順

手順は大きく分けて3つあります。

  1. パッケージ化するフォルダの作成
  2. 「package.json」の記述
  3. PackageManagerからパッケージの追加

一つずつ見ていきます。

 

パッケージ化するフォルダの作成

パッケージ化するフォルダを作成します。基本的なルールはAssets以下のプロジェクトと同じような感じです。つまりEditor以下はビルドされませんし、AssemblyDifinitionFileは使えます。

例えば今回はエディター拡張と画像ファイルを適当に突っ込んだフォルダを用意しました。

f:id:tsubaki_t1:20180913204126p:plain

 

package.jsonの記述

次にpackage.jsonを記述します。ここにパッケージのバージョンやパッケージの名前、依存関係等を記述していくわけです。

gist.github.com

f:id:tsubaki_t1:20180913204625j:plain

記述のルールに関してはPackageManagerのマニュアルに詳しく記述されています。
多くの場合、パッケージに「他のパッケージへ依存関係を持たせる」方法が有益かもしれません。

 

パッケージの登録・登録解除

最後にパッケージを登録します。
PackageManagerの下に+ボタンが追加されており、ここからpackage.jsonを指定すると、指定のパッケージが登録出来ます。

f:id:tsubaki_t1:20180913205745g:plain

登録するとPackages一覧に自作のパッケージが追加されました。

ただエディター拡張が使えたり使えなかったりします。動作を確認中

f:id:tsubaki_t1:20180913205616j:plain

 

パッケージの登録解除はPackageManagerから行います。
Removeボタンを押せば登録が解除され、一覧から参照出来なくなります。

f:id:tsubaki_t1:20180913211358j:plain

 

PackageManagerの一覧表示が少し変わった

PackageManagerの一覧表示のオプションとして「Previewを表示するかどうか」が追加されました。

PackageManagerが提供するアセットは「Verified」と「Preview」の二種類があり、Verifiedは安定版Previewはβ版といえます。
今回は明確にPreviewを隔離した形です。なおPreview外すと新しい機能が殆ど無くなるっていうね。

f:id:tsubaki_t1:20180913211544j:plain

またパッケージ内で検索出来るようになりました。特に最近はパッケージが増えてきていて探すのが面倒になってきていたので、コレはありがたいんじゃないかなという気がします。

まぁ検索が効くのはパッケージ名だけで、カテゴリとかはスルーされてるんですが

f:id:tsubaki_t1:20180913211932j:plain

 

パッケージがローカルにキャッシュされるようになった

PackageManagerから入手したパッケージは基本的に特別なフォルダにキャッシュされていたのですが、今回これがプロジェクトの子階層にキャッシュされるようになりました。

tsubakit1.hateblo.jp

これが何を意味するかは難しい所ですが、PackageManagerのコードを書き換えても他のプロジェクトに影響しにくくなったと言えるかもしれません。

  • パス : {プロジェクト名}\Library\PackageCache

ただ、普通のプロジェクトではプロジェクトを共有する際にLibraryは抜くので、ココを改造するとプロジェクトが簡単に破綻するかもしれません。改造を目的とするなら、何処か適当なフォルダにコピーしPackageManager経由でインポートする手順を使ったほうが良さそうです。
あくまで「間違ってファイルを書き換えた時に事故る」対策なのかもしれません。

f:id:tsubaki_t1:20180913212310j:plain

Unityの基本機能の取り外し

前から出来ましたが、Unityの基本機能の取り外しがある意味分かりやすくなりました。正確にはエンジンの機能というよりはエンジンへアクセスするC#インターフェースを取り除けます。
エンジンに完全に機能が組み込まれてしまっている部分では効果は薄いかもしれませんが、WebGLなど非使用コードが積極的に削除されるプラットフォームや、ストリップ可能なC#で殆どの機能が記述されている場合(例えばTimeline)にはかなり有効な機能なんじゃないかなと思います。

  1. PackageManagerのBuilt in packagesの項目を選択します。
  2. 好きな機能(例えばアニメーション)を選択します。
  3. Disableで止めます

f:id:tsubaki_t1:20180913213338j:plain

これて止めると該当するAPIが使用できなくなります。

f:id:tsubaki_t1:20180913213452j:plain

何故明示的に削るのかというと、UnityにはCode Stripという不使用のコードを削る機能があるのですが、これはゲームに使用されている(SceneやPrefab等で)だけでなく、完全に不使用のサンプルコードから使用されている場合にも「使用する」判定となり、多くの場合あまりうまく機能していませんでした。

 なのでバイナリサイズを抑えようと思ったら不使用コードは全部プロジェクトから取り除き全コードを注意深く観察する必要があったのですが、今回コレで強引にプロジェクトから剥がすことが出来るようになったという訳です。