Version: 2021.1
Asset loading metrics
一般的なアセットタイプ

アセットワークフロー

このセクションでは、Unity でアセットを使用するための原則を説明します。以下のトピックが含まれます。

また、マニュアルの他のセクションで以下の関連トピックも参照してください。

アセットとは

アセットは、プロジェクトで使用できるすべてのアイテムを表します。アセットは、3D モデル、オーディオファイル、画像など、Unity の外部で作成されたファイルから取得される場合もあります。Unity で ProBuilder メッシュ、アニメーターコントローラー、オーディオミキサー、レンダーテクスチャなどの数種類のアセットタイプを作成できます。

アセットをインポートする方法

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

  1. Unity は アセットに一意の ID を割り当てます
  2. Unity は .meta ファイルを作成します
  3. Unity は アセットを処理します

場合によっては、Unity は 1 つのアセットファイルをインポートする間に複数のアセットを作成することがあります。詳細は、複雑なアセットのインポート を参照してください。

インポート設定 は Unity がアセットを処理する方法に影響します。詳細は、 アセットとそのインポート設定 を参照してください。

一意の ID

Assets フォルダーに テクスチャなどのアセットを保存すると、Unity が新しいファイルの追加を検出します。なぜなら、Assets フォルダーのコンテンツはエディターによって既知のアセットのリストと頻繁に照合されているからです。

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

.meta ファイル

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

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

Unity がアセットの .meta ファイルを作成するとき .meta ファイルの内部にアセット ID を書き込み、アセットファイルと同じ場所にその .metaファイルを保存します。.meta ファイルにはアセットの ID が含まれているため、関連するアセットファイルと同じ場所に保存する必要があります。Project ウィンドウでアセットを移動または名前変更すると、Unity は自動的に対応する .meta ファイルを移動または名前変更します。ただし、Unity の外部でアセットを移動/名前変更する場合 (例えば、システムのファイルブラウザー) は、それに一致する .meta ファイルを移動/名前変更してください。

アセットが .meta ファイルを失うと (例えば、.meta ファイルを更新せずにアセットを Unity のProject ウィンドウの外に移動/名前変更した場合)、そのアセットへの参照はすべて壊れます。Unity は違うアセットを扱うようにそのアセットのために新しい .meta ファイルを生成し、“参照アセットがなくなった” 古い .meta ファイルを削除します。

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

同様に、ゲームオブジェクト (またはプレハブ) にアタッチされたスクリプトアセットがその .meta ファイルを失うと、そのゲームオブジェクトはスクリプトの機能を失い、“割り当てのないスクリプト” コンポーネントになります。これを修正するには、スクリプトをゲームオブジェクトに手動で再割り当てする必要があります。

Empty folders, meta files, and version control

In Unity, folders in your project’s Assets folder are assigned their own .meta file - however some version control systems (VCS) can’t store empty folders. This means when you add or delete an empty folder from your project, your VCS will store the .meta file as added or removed, but won’t store the change of adding or removing the folder itself, which can be confusing or problematic.

To help with this issue, Unity behaves in the following specific ways relating to empty folders:

If Unity detects an empty folder that no longer has a corresponding meta file, when that folder previously had a meta file, Unity assumes the meta file was removed via the deletion of the folder by another user in your VCS, and deletes the empty folder locally.

If Unity detects a new meta file for a folder, but that folder does not exist locally, Unity assumes the new meta file was created via to the addition of the folder by another user in the VCS, and creates the corresponding empty folder locally.

アセット処理

Unity は Assets フォルダーに加えられたファイルを読み込み、処理して、ファイルのコンテンツをゲーム対応の内部データに変換します。アセットファイル自体は変更されずに残り、内部データはプロジェクトの Library フォルダーに保存されます。

アセットに内部形式を使用すると、ゲームで使用可能なバージョンのアセットがランタイムにエディターで使用できるようになり、変更されていないソースファイルは Assets フォルダーに保持されます。内部形式をアセットファイルと別にしておくと、素早く編集してエディターに自動的に変更を反映させることができます。例えば、Photoshop ファイル形式は便利で、.psd ファイルを直接 Assets フォルダーに保存できますが、モバイルデバイスや PC グラフィックスカードなどのハードウェアは、それらの形式を直接処理してテクスチャとしてレンダリングできません。

Unity はアセットの内部形式をキャッシュフォルダーのような Library フォルダーに保存します。ユーザーは、Library フォルダーを手動で変更する必要はありません。変更しようとすると、Unity エディターのプロジェクトに悪影響を及ぼす可能性があります。ただし、Unity でプロジェクトが開いていない限り、Library フォルダーを安全に削除できます。なぜなら、Unity は Assets フォルダーと ProjectSettings フォルダーからすべてのデータを再生成できるためです。これは、Library フォルダーをバージョン管理下に含めるべきではないことも意味します。

複雑なアセットのインポート

Unity が 1 つのアセットファイルをインポートするときに、複数のアセットを作成する場合があります。例えば、以下の状況で発生します。

インポートの状況 Unity がファイルを処理する方法
3D ファイル (FBX ファイルなど) がマテリアルを定義するか、埋め込まれたテクスチャを含む場合 Unity は マテリアルと埋め込まれたテクスチャ を別々のアセットとして抽出します。
画像ファイルを複数の 2D スプライトとしてインポートしたい場合 1 つのグラフィックス画像から複数のスプライトを定義するには、2D スプライトエディター を使用します。この場合、エディターで定義された各スプライトは、 Project ウィンドウに個別のスプライトアセットとして表示されます。
3D ファイルに複数のアニメーションタイムラインまたは複数のクリップが含まれている場合 Unity は、アニメーションのインポート設定 に基づいて、別々のアニメーションタイムラインやクリップを自動的に定義します。作成された複数のアニメーションクリップは、Project ウィンドウに個別のアニメーションクリップアセットとして表示されます。

アセットとインポート設定

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

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

プロジェクトをバックアップするとき、またはバージョン管理リポジトリにプロジェクトを加えるときは、Assets フォルダーと ProjectSettings フォルダーの両方を含むメインの Unity プロジェクトフォルダーを加えます。Unity は、アセットを再インポートしゲームやアプリケーションを再構築するために、これらのフォルダーの情報に依存します。Library フォルダーと Temp フォルダーをバックアップしたり、 バージョン管理下に置いたりしないでください。

Asset loading metrics
一般的なアセットタイプ