指定のアセットがプロジェクト内に無い場合、不足ファイルの一覧と該当アセットのあるファイルへのリンクを表示してくれるアセットを作成しました。
エディタを起動させた際にアセットが不足している場合、必要なアセットを表示してくれます。また、「A$」ボタンを押すことで、アセットストアもしくは必要なアセットのあるサイトを開きます。
コンパイルエラーがあっても動作するので、ソースコードで不足分のファイルへアクセスしている場合でも使えます。
主に、オープンソースのようなプロジェクトでアセットストアのアセットを使用したい場合や、アセットのサンプルを作成した場合などに使う事を想定してます
インポーターの使い方
インポーターの導入は、unitypackageにあるAssetRequest.dll を導入するだけです。GUIDが変わるのは避けたいのでUnitypackageから入れる推奨です。
https://github.com/tsubaki/Unity-AssetRequest/blob/master/assetrequest.unitypackage?raw=true
あとは、Unityエディタ起動時にリクエストファイル*1をプロジェクトから探し、リクエストファイルに記述されているアセットを探索・不足分を一覧を表示してくれます。
手動でインポーターを起動したい場合は、メニュー>Assets>Package maker>Import Request Packageでインポーターが起動します。
インポーターはGUIDでファイルを検索するので、ファイルのパスが多少変わっていても問題はありません。逆を言えば、GUIDが変化する方法でのファイル導入(たとえばunitypackage以外でのファイルインポート)を行ったファイルは見つけることが出来ません。
リクエストファイルの作り方
リクエストファイルを作るには、3つのステップが必要です。
まずはリクエストするAssetStoreのコンテンツ番号もしくはURLを取得します。リクエストするファイルがAssetStoreの何に含まれているのか分からない場合、以下の手順で見つけることが出来ます。
- Projectビューで任意のファイル名もしくはアセットのRootフォルダを検索
- 検索対象をAssetStoreに変更
- InspectorのWeb pageからウェブページを開く
- URL末尾の数字を記憶する
AssetStoreではなく任意のURLの場合は、「sAssetStore」を押すとURL指定出来るようになります。
次に、リクエストするファイルを設定します。
- メニュー>Assets>PackageMaker>Create Request Fileを選択します。
- Findをクリックし、リクエストしたいファイルの含まれるフォルダを選択します。
- 控えていたアセットのコンテンツ番号を入力します。
- 不要なファイルからチェックを外し、Saveを押します。
あとは作成したリクエストファイルをプロジェクト内、出来れば自分のプロダクトのフォルダ以下にでも配置しておくと、AssetRequest.dll導入時に必要なファイルの一覧を表示してくれます。
AssetRequest.dllは再配布OKです。ただGUIDが異なっていて別のファイルとしてインポートされると面倒なことになりそうなので、GUIDが変化しないようにmetaと一緒に操作する、もしくはunitypackageで管理推奨です。
今後の予定(希望)
要望があればですが、Diff(アセットのダウンロード後、差分を適応する的な)を追加したいなーと思ってます。あとはストレージに対するパッケージの自動インポートと、unitypackageベースのファイルアンインストールも。
Unitypackage uninstaller #unity pic.twitter.com/JlQOSawZuE
— 椿 (@tsubaki_t1) 2015, 7月 16
サンプル
tsubaki/Unity-AssetRequest · GitHub
何故かdllがコミットできなかったので、分けてあります。
*1:ImportPackages*.impに一致するファイル