Version: 2020.3
言語: 日本語
インポーターの一貫性
アセットデータベース

アセットのメタデータ

Unity がアセットをインポートする場合、それらに関する追加データ (例えば、アセットのインポートに使うインポート設定や、プロジェクト内でそのアセットを使用する箇所) 付加的データを保存管理します。以下で、この処理のしくみを説明します。 

  1. Unity がアセットに固有の ID を割り当てます。
  2. Unity がアセットファイルに付随する .meta ファイルを作成します。
  3. Unity が アセットを処理します

任意のアセットの インポート設定 は、アセットの処理方法に影響を与えます。アセットファイルやアセットのインポート設定を変更すると、Unity はアセットを再インポートします。詳細については、アセットとそのインポート設定 を参照してください。

固有の ID

Unity エディターは、Assets フォルダーのコンテンツを既に用意されているアセットリストと頻繁に照合します。そのため、アセットを Assets フォルダーに配置すると、Unity は新しいファイルが追加されたことを検出します。

Unity は新しいファイルを見つけると、固有の ID をアセットに割り当てます。これは Unity がアセットを参照するために内部的に使用する ID で、Unity は何も壊すことなくアセットの移動や名前の変更を行うことができます。

ID は通常、エディターでは表示されません。

メタファイル

下の画像は、Unity がプロジェクトの Assets フォルダー内の各アイテムに対して作成する .meta ファイルです。Unity はアセットファイルやフォルダーに対してメタファイルを作成します。

これらのファイルは Unity の Project ウィンドウでは隠されており、デフォルトでファイルシステムでも隠されている可能性があります (Wikipedia: Hidden file and hidden directory 参照)。そのため、使用しているコンピューターで隠しファイルを表示するようにしないと、Windows エクスプローラーや Finder では表示されない場合があります。

コンピューターの Unity プロジェクトの Assets フォルダー、.meta ファイル、Unity の Project ウィンドウの関係
コンピューターの Unity プロジェクトの Assets フォルダー、.meta ファイル、Unity の Project ウィンドウの関係

この例は、Unity がプロジェクトの Assets フォルダー内の各アセットまたはフォルダーに対して .meta ファイルを作成して、それらがシステムファイルブラウザーに表示されることを示しています。ただし、これらの .meta ファイルはデフォルトで 非表示 になっているため、Project ウィンドウには表示されません。Mode プロジェクト設定から Visible Meta Files を選択すると、それらを表示することができます。

Unity がアセットの .meta ファイルを作成するとき .meta ファイルの内部にアセット ID を書き込み、アセットファイルと同じ場所にその .metaファイルを保存します。

.meta ファイルには、アセットに割り当てられた固有の ID と、Project ウィンドウでアセットを選択するときに Inspector ウィンドウに表示されるすべての インポート設定 の値が含まれています。例えば、テクスチャの場合、Texture TypeWrap ModeFilter ModeAniso Level インポート設定が含まれます。

アセットのインポート設定を変更すると、新しい設定は アセットに付随する .meta ファイルに保存されます。Unity は更新された設定に従ってアセットを再インポートし、プロジェクトの Library フォルダー内の対応するインポートされた “ゲーム対応” データを更新します。

メタファイルとアセットファイル

注意: .meta ファイルには、プロジェクトでアセットがどのように使用されるべきかに関する重要な情報が含まれており、関連するアセットファイルに保管される必要があります。Unity の Project ウィンドウ内でアセットの移動や名前の変更を行うと、対応する .meta ファイルも自動的に移動や名前の変更が行われます。ただし、Unity 以外の場所 (Windows のエクスプローラーや macOS の Finder) でアセットを移動や名前変更した場合は、それに合わせて .meta ファイルの移動や名前変更を行う必要があります。

アセットがメタファイルを失うと (例えば、Unity の外部でアセットの移動や名前変更を行ったが、対応する .meta ファイルの移動や名前変更を行わない場合)、プロジェクト内のそのアセットへの参照はすべて壊れます。この場合、Unity は、アセットに対応するメタファイルがないことを認識し、移動/名前変更されたアセットに対して新しいアセットに行うように新しいメタファイルを生成し、古い “孤立した” .meta ファイルを削除します。

このプロセスは、プロジェクトに例えば、以下のような大きな問題を引き起こす可能性があります。 * テクスチャアセットが .meta ファイルを失うと、そのテクスチャを使っていたすべてのマテリアルはテクスチャへの参照を失います。これを修正するには、そのテクスチャを必要とするマテリアルに手動で再割り当てする必要があります。 * スクリプトアセットが .meta ファイルを失うと、そのスクリプトが割り当てられているゲームオブジェクトやプレハブは、代わりに “割り当てされていないスクリプト” コンポーネントとなり、その機能を失います。この問題を解決するには、そのスクリプトを必要とするゲームオブジェクトに、手動でそのスクリプトを再割り当てする必要があります。

空のフォルダー、メタファイル、バージョン管理

Unity では、プロジェクトの Assets フォルダー内の各フォルダーに、独自の .meta ファイルを割り当てます。ただし、バージョン管理システム (VCS) の中には、空のフォルダーを保存できないものがあります。つまり、プロジェクトに空のフォルダーを追加/削除すると、VCS は追加/削除された .meta ファイルを保存しますが、フォルダー自体の追加/削除の変更を保存しないため、混乱や問題が発生する可能性があります。

この問題を解決するために、Unity は空のフォルダーに関して以下のような特定の動作をします。

Unity が対応するメタファイルを持たない空のフォルダーを検出すると、そのフォルダーに以前メタファイルがあった場合、VCS の他のユーザーによるフォルダーの削除によってメタファイルが削除されたとみなし、その空のフォルダーをローカルで削除します。

Unity があるフォルダーの新しいメタファイルを検出したがそのフォルダーがローカルに存在しない場合、Unity は新しいメタファイルが VCS の他のユーザーによるフォルダーの追加によって作成されたものとみなし、対応する空のフォルダーをローカルに作成します。

インポーターの一貫性
アセットデータベース