AssetPostprocessor を利用すると、インポートしたパイプラインをフックし、アセットをインポートする前と後にスクリプトを実行することが可能になります。
モデルのインポート時、関数は以下の順番で呼び出されます:
- OnPreprocessModel is called at the very beginning and you can override ModelImporter settings that are used for the whole model import process.
- Once Meshes and Materials are imported, we create GameObjects hierarchy from the imported nodes. Every GameObject that represents imported node gets correspondent MeshFilter, MeshRenderer and MeshCollider components. Before assigning a Material to the MeshRenderer OnAssignMaterialModel function is invoked.
- After GameObject has initialized MeshRenderers and "userdata" exists OnPostprocessGameObjectWithUserProperties is called. That happens before children GameObjects are generated.
- アニメーション生成が以前に無効にされていなければ (ModelImporter.generateAnimations 参照)、スキンメッシュとアニメーションが生成されます。可能な場合は、アバターも作成され、ゲームオブジェクトのヒエラルキーが最適化されます。その後、OnPostprocessModel がルートのゲームオブジェクトのために呼び出されます。
assetImporter のタイプが SpeedTreeImporter であることを除き、OnPreprocessModel や OnPostprocessModel と同様に、OnPreprocessSpeedTree と OnPostprocessSpeedTree が SpeedTree アセット (.spm file) に関して呼び出されます。
使用するときは AssetPostprocessor を継承したクラスを作成します実際に使用する際にはスクリプトは必ず事前にビルドされた DLL を準備し、プロジェクト内に置いておくことをお勧めします。
AssetPostprocessor はインポートされたアセットの出力を元に動作します。したがって、アセットのスクリプトにコンパイルエラーが検出された際にも、変更されたデータが出力されたと検出され、誤った動作をしてしまうことがあります。
この誤った動作はパイプライン処理に重大な問題へと繋がる恐れがあります。AssetPostprocessor 用の DLL を用意することで、スクリプト(Assembly-CSharp-Editor でコンパイルされるもの)がコンパイルエラーを出した場合でも、正常に動作ができるようになります。
この方法により、インポート設定のデフォルト値を上書きしたり、テクスチャやメッシュのようなデータを変更することができます。
| assetImporter | インポートしようとしている AssetImporter を参照します |
| assetPath | インポートされたアセットと、インポートしようとしているアセットに対してのパスを取得します |
| GetPostprocessOrder | インポート処理される順番を設定します |
| GetVersion | アセットのポストプロセッサーのバージョンを返します |
| LogError | コンソールにエラーログを表示します |
| LogWarning | コンソールに警告ログを表示します |
| OnAssignMaterialModel | ソースマテリアルをフィードします。 |
| OnPostprocessAllAssets | 任意の数のアセットのインポートが完了した後に呼び出されます(アセットの進捗バーが最後まで到達したとき) |
| OnPostprocessAssetbundleNameChanged | アセットが他のアセットバンドルに指定される場合に呼び出されるハンドラー |
| OnPostprocessAudio | この関数をサブクラスに追加してオーディオクリップがインポート完了したときに通知を取得します |
| OnPostprocessGameObjectWithUserProperties | インポートファイルで少なくとも一つのユーザープロパティーがアタッチされたおのおののゲームオブジェクトごとに呼び出されます |
| OnPostprocessModel | この関数をサブクラスに追加してモデルのインポートが完了したときに通知を取得します |
| OnPostprocessSpeedTree | サブクラスにこの関数を加え、SpeedTree アセットのインポートが完了したら通知を受け取ります。 |
| OnPostprocessSprites | この関数をサブクラスに追加すると、スプライトのテクスチャをインポートし終わったときに通知を受ける事ができます。 |
| OnPostprocessTexture | この関数をサブクラスに追加してテクスチャのインポート完了の直後に通知を取得します |
| OnPreprocessAnimation | この関数をサブクラスに追加してモデル (.fbx、.mb ファイル等) のインポート完了の直前に通知を取得します |
| OnPreprocessAudio | この関数をサブクラスに追加してオーディオクリップのインポート完了の直前に通知を取得します |
| OnPreprocessModel | この関数をサブクラスに追加してモデル (.fbx、.mb ファイル等) のインポート完了の直前に通知を取得します |
| OnPreprocessSpeedTree | スピードツリーのアセット(.spm 形式のファイル)をインポートする直前に通知を受け取りたい場合は、この関数をサブクラスに追加してください。 |
| OnPreprocessTexture | この関数をサブクラスに追加してテクスチャインポートツール実行の直前に通知を取得します |