テラシュールブログ

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

【Unity】指定のアセットがプロジェクト内に存在しない場合、不足アセット一覧とパッケージへのリンクを表示してくれる効果が発動するアセットを作成した

f:id:tsubaki_t1:20150729014704p:plain

指定のアセットがプロジェクト内に無い場合、不足ファイルの一覧と該当アセットのあるファイルへのリンクを表示してくれるアセットを作成しました。

 

エディタを起動させた際にアセットが不足している場合、必要なアセットを表示してくれます。また、「A$」ボタンを押すことで、アセットストアもしくは必要なアセットのあるサイトを開きます

コンパイルエラーがあっても動作するので、ソースコードで不足分のファイルへアクセスしている場合でも使えます。

f:id:tsubaki_t1:20150729015044g:plain

主に、オープンソースのようなプロジェクトでアセットストアのアセットを使用したい場合や、アセットのサンプルを作成した場合などに使う事を想定してます

tsubakit1.hateblo.jp

インポーターの使い方

インポーターの導入は、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以外でのファイルインポート)を行ったファイルは見つけることが出来ません。

tsubakit1.hateblo.jp

リクエストファイルの作り方

リクエストファイルを作るには、3つのステップが必要です。

f:id:tsubaki_t1:20150729022356p:plain

まずはリクエストするAssetStoreのコンテンツ番号もしくはURLを取得します。リクエストするファイルがAssetStoreの何に含まれているのか分からない場合、以下の手順で見つけることが出来ます。

  1. Projectビューで任意のファイル名もしくはアセットのRootフォルダを検索
  2. 検索対象をAssetStoreに変更
  3. InspectorのWeb pageからウェブページを開く
  4. URL末尾の数字を記憶する

AssetStoreではなく任意のURLの場合は、「sAssetStore」を押すとURL指定出来るようになります。

f:id:tsubaki_t1:20150729022324g:plain

次に、リクエストするファイルを設定します。

  1. メニュー>Assets>PackageMaker>Create Request Fileを選択します。
  2. Findをクリックし、リクエストしたいファイルの含まれるフォルダを選択します。
  3. 控えていたアセットのコンテンツ番号を入力します。
  4. 不要なファイルからチェックを外し、Saveを押します。

f:id:tsubaki_t1:20150729023122g:plain

あとは作成したリクエストファイルをプロジェクト内、出来れば自分のプロダクトのフォルダ以下にでも配置しておくと、AssetRequest.dll導入時に必要なファイルの一覧を表示してくれます。

AssetRequest.dllは再配布OKです。ただGUIDが異なっていて別のファイルとしてインポートされると面倒なことになりそうなので、GUIDが変化しないようにmetaと一緒に操作する、もしくはunitypackageで管理推奨です。

今後の予定(希望)

要望があればですが、Diff(アセットのダウンロード後、差分を適応する的な)を追加したいなーと思ってます。あとはストレージに対するパッケージの自動インポートと、unitypackageベースのファイルアンインストールも。

サンプル

tsubaki/Unity-AssetRequest · GitHub

何故かdllがコミットできなかったので、分けてあります。

*1:ImportPackages*.impに一致するファイル