コマンドライン引数
AssetDatabase

アセットの内部処理

Unity はアセットを自動的にインポートして、インポート設定が必要なさまざまな種類の追加データを管理することでプロジェクト内でアセットを使用できるようにします。以下で、この処理がどのように行われるか説明します。

アセットをインポートするとき、Unity で行われていること

1. ユニーク ID の割り当て

テキストなどのアセットを Assets フォルダーに置くとき、Unity は最初に、新しいファイルが追加されたことを察知します (エディターが、頻繁に既存のアセット リストと比較して Assets フォルダーのコンテンツをチェックします)。

まず、Unity は一意の ID をアセットに割り当てます。この ID は Unity の内部でアセットを照会するために使用されます。つまり、アセットへの照会を失うことなく、アセットを移動したり名前変更をすることができます。

2. .meta ファイルの作成

コンピュータ上にある Unity Project 内の Assets フォルダー と Unity 内の プロジェクト ウィンドウの関係
コンピュータ上にある Unity Project 内の Assets フォルダー と Unity 内の プロジェクト ウィンドウの関係

上の図で、.meta ファイルが、Assets フォルダー内に作成された各アセットとフォルダーのファイルシステムにリストされていますが、Unity の プロジェクト ウィンドウでは見えません。Unity はこれらのファイルを各アセットごとに作成しますが、デフォルトでは非表示 となっており、 Explorer や Finder で見ることはできません。Unity で以下のオプションを選ぶと、表示することができます。 Edit > Project Settings > Editor > Versions Control, Mode : Visible Meta Files

Unity が各アセットに割り当てる ID は、Unity がアセット ファイルと一緒に作成した .meta ファイル内に保管されます。この .meta ファイルは、関連するアセット ファイルと一緒にしておかなければなりません。

重要 .meta ファイルは各アセットファイルと一緒にしておかなければなりません。Unity の プロジェクト ウィンドウ内でアセットを移動したり名前の変更をすると、Unity は自動的に、対応する .meta ファイルも移動、または、名称変更します。Unity の外部* (つまり、Windows Explorer や Mac の Finder) のアセットを移動、または、名称変更する場合は、呼応するように .meta データファイルを移動、または、名称変更する必要があります

アセットのメタファイルが失われると (例えば、呼応する .meta ファイルの移動や名称変更をせずに、Unity の外のアセットを移動したり名称変更した場合)、そのアセットへの参照は失われます。Unity では、移動、または、名称変更したアセットに対し、まったく新しいファイルに行うのと同様に、新規の .meta ファイルを生成します。古い参照先を失った .meta ファイルは削除されます。

例えば、あるテクスチャ アセットが、その .meta ファイルを失うと、そのテクスチャを使用していたすべてのマテリアルはそのテクスチャへの参照を失います。これを修正するために、テクスチャを必要とするすべてのマテリアルに手動で再割り振りしなくてはなりません。

スクリプトアセットが .meta ファイルを失うと、そのスクリプトを割り当てられたゲームオブジェクトやプレハブは、「割り当てされていないスクリプト」のコンポーネントになってしまい、機能を失います。これを修正するには、これらのオブジェクトに手動でスクリプトを再割り振りしなければなりません。

3. ソース アセットの処理

Unity は、ファイル コンテンツを内部のゲームにすぐに使えるバージョンのデータに変換して、Assets フォルダーに加えたどんなファイルも読み込み、処理します。実際のアセットファイルは変更なしのまま残り、処理、および、変換済バージョンのデータは、プロジェクトの Library フォルダーに保存されます。

アセット用の内部形式を使用して、Unity は、エディターで実行時にすぐ使用できるバージョンのゲームのアセットを作成します。一方、アセットフォルダー内の変更なしのソースファイルはそのまま保たれ、素早く編集し、変更点を自動的にエディターに反映することができます。例えば、作業に便利な Photoshop ファイルは、アセットフォルダーに直接保存できますが、モバイル機器や PC のグラフィックカードなどのハードウェアでは、その形式を直接テクスチャとして読む込む事はできません。アセットから生成された Unity 内部の形式のデータはすべて、キャッシュフォルダーと似た役割を果たす Library フォルダーに保存されます。ユーザーは、ライブラリフォルダーを手動で変更してはいけません。仮に手動で変更してしまうと、Unity エディター上のプロジェクトが正常に機能しなくなります。ライブラリフォルダーの削除は、(プロジェクトが Unity で開かれていなければ)いつでも問題ありません。ライブラリフォルダー内のすべてのデータは、Assets と ProjectSettings 両フォルダーに保存されているファイルから生成されます。これは、ライブラリフォルダーをバージョン管理に含むべきではない、という事でもあります。

ときどき、1回のインポートで複数アセットが作成される

アセットファイルが、複数のアセットを作成することがあります。それは、以下のような場合に発生します。

  • マテリアルを定義し、かつ / または、埋め込まれたテクスチャを含む FBX などの 3D ファイルの場合 この場合、定義されたマテリアルと埋め込まれたテクスチャは取り出され、Unity 内で別のアセットとして扱われます。

  • 複数スプライトとしてインポートされた画像 Unity のスプライト エディターを使って、単数グラフィック画像から複数スプライトを定義することは可能です。この場合、エディターで定義される各スプライトは、プロジェクトウィンドウで別々のスプライトアセットとして表示されます。

  • 3D ファイルが複数のアニメーション タイムラインを含む場合、または、アニメーション インポート設定内で定義された複数の別々のクリップを持つ場合 この場合、複数アニメーション クリップはプロジェクト ウィンドウ内で、別々のアニメーション クリップ アセットとして表示されます。

インポート設定によりアセット処理の変更が可能

Unity は、アセットをインポートし、ライブラリフォルダーに格納するための設定情報を .meta files に保存します。アセットそれぞれに固有の ID を割り振るのと同時に、メタファイルには、プロジェクトウインドウでアセットを選択したときにインスペクターに表示される、すべてのインポート設定を格納します。テクスチャでは Texture Type、Wrap Mode、Filter Mode や Aniso Level などの設定が含まれます。

インポート設定をアセットごとに変更すると、その設定はアセットに紐づく .meta ファイルに保存されます。アセットはその新しい設定に基づき再インポートされ、インポートされた該当の「ゲームにすぐ使える」データはプロジェクトの Library フォルダー内で更新されます。

プロジェクトをバックアップするときや、プロジェクトをバージョン管理のリポジトリに追加するとき、メインの Unity プロジェクトのフォルダー、すなわち AssetsProjectSettings の両方を含めるようにしてください。これらのフォルダーに含まれるすべての情報は Unity が動作するうえで重要な情報です。LibraryTemp フォルダーは含めなくても動作に影響はありません。

注意: 明示的に有効となっていない場合、Unity 4.2 以前に作成されたプロジェクトは .meta ファイルがない可能性があります。.meta ファイルのない状態で Library フォルダーを削除してしまうと永久的にプロジェクトが壊れてしまい、元に戻すことが難しくなります。

コマンドライン引数
AssetDatabase