Version: 2018.1
カスタムメニュー項目とエディター機能のサポート
AssetDatabase

アセットの内部処理

Unity はアセットを自動的にインポートして、それらに関する様々な種類の追加データ (例えば、アセットのインポート設定や、プロジェクトを通してそのアセットを使用する個所) を管理します。以下で、この処理のしくみを説明します。

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

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

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

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

2. .meta ファイルの作成

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

上の図で、.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 ファイル形式は、便利で Assets フォルダーに直接保存できますが、モバイル機器や PC のグラフィックスカードなどのハードウェアでは、その形式を直接テクスチャとして描画することはできません。アセットを表す Unity 内部のすべてのデータは、キャッシュフォルダーと似た役割を果たす Library フォルダーに保存されます。ユーザーは、Library フォルダーを手動で変更すべきではありません。仮に手動で変更してしまうと、Unity エディターのプロジェクトが正常に機能しなくなります。ただし、すべてのデータは Assets フォルダーおよび Project Settings フォルダーに格納されているものから生成されるため、(Unity でプロジェクトが開かれていない間は) Library フォルダーを削除しても安全です。これは、Library フォルダーをバージョン管理に含むべきではない、という事でもあります。

1 回のインポートで複数アセットが作成される場合がある

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

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

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

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

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

アセットに割り当てられた一意の ID と同様に、 .meta ファイルにはすべての インポート設定 の値が含まれます。この値は、Project ウィンドウでアセットを選択すると、インスペクターに表示されます。テクスチャの場合は、Texture Type、Wrap Mode、Filter Mode,Aniso Level などの設定が含まれます。

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

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

注意 明示的に有効にしないと、Unity 4.2 以前に作成されたプロジェクトには .meta ファイルがない可能性があります。.meta ファイルのないプロジェクトで Library フォルダーを削除してしまうと、永久にプロジェクトが壊れてしまい、元に戻すことが難しくなります。なぜなら、生成された内部形式アセット メタデータは Library フォルダーに保存されているからです。

カスタムメニュー項目とエディター機能のサポート
AssetDatabase