class in UnityEditor
/
Implemented in:UnityEditor
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
CloseAssetPostprocessor lets you hook into the import pipeline and run scripts prior or after importing assets.
During model import the functions are called in the the following order:
- OnPreprocessModel is called at the very beginning and you can override ModelImporter settings that are used for the whole model import process.
- After Meshes and Materials are imported, the GameObjects hierarchy is created from the imported nodes. Use OnPostprocessMeshHierarchy to change the hierarchy. Every GameObject that represents an imported node is given a corresponding MeshFilter, MeshRenderer, and MeshCollider component. Before assigning a Material to the MeshRenderer, the OnAssignMaterialModel function is invoked.
- After GameObject has initialized MeshRenderers and "userdata" exists OnPostprocessGameObjectWithUserProperties is called. That happens before children GameObjects are generated.
- If animation generation was not disabled at previous stages (see ModelImporter.generateAnimations), then SkinnedMesh and Animations are generated. If possible Avatar is also created and GameObjecs hierarchy is optimized. After that OnPostprocessModel is called for the root GameObject.
OnPreprocessSpeedTree and OnPostprocessSpeedTree are called on SpeedTree assets (.spm file) the same way as OnPreprocessModel and OnPostprocessModel, except that the assetImporter type is SpeedTreeImporter.
In a production pipeline AssetPostprocessors should always be placed in pre-built dll's in the project instead of in scripts.
AssetPostprocessors change the output of imported assets, thus a compile error in one of the scripts will lead to assets being imported differently.
This can be a severe issue when working in a production pipeline. By using dll's for AssetPostprocessors you ensure that they can always be executed even if the scripts have compile errors.
This way you can override default values in the import settings or modify the imported data like textures or meshes.
assetImporter | Reference to the asset importer. |
assetPath | The path name of the asset being imported. |
context | The import context. |
GetPostprocessOrder | Override the order in which importers are processed. |
GetVersion | Returns the version of the asset postprocessor. |
LogError | Logs an import error message to the console. |
LogWarning | Logs an import warning to the console. |
OnAssignMaterialModel | Feeds a source material. |
OnPostprocessAllAssets | This is called after importing of any number of assets is complete (when the Assets progress bar has reached the end). |
OnPostprocessAnimation | This function is called when an AnimationClip has finished importing. |
OnPostprocessAssetbundleNameChanged | Handler called when asset is assigned to a different asset bundle. |
OnPostprocessAudio | Add this function to a subclass to get a notification when an audio clip has completed importing. |
OnPostprocessCubemap | Add this function to a subclass to get a notification just before a cubemap texture has completed importing. |
OnPostprocessGameObjectWithAnimatedUserProperties | This function is called when the animation curves for a custom property are finished importing. |
OnPostprocessGameObjectWithUserProperties | Gets called for each GameObject that had at least one user property attached to it in the imported file. |
OnPostprocessMaterial | Add this function to a subclass to get a notification when a Material asset has completed importing. |
OnPostprocessMeshHierarchy | This function is called when a new transform hierarchy has finished importing. |
OnPostprocessModel | Add this function to a subclass to get a notification when a model has completed importing. |
OnPostprocessSpeedTree | Add this function to a subclass to get a notification when a SpeedTree asset has completed importing. |
OnPostprocessSprites | Add this function to a subclass to get a notification when an texture of sprite(s) has completed importing. |
OnPostprocessTexture | Add this function to a subclass to get a notification when a texture has completed importing just before. |
OnPreprocessAnimation | Add this function to a subclass to get a notification just before animation from a model (.fbx, .mb file etc.) is imported. |
OnPreprocessAsset | Add this function to a subclass to get a notification just before any Asset is imported. |
OnPreprocessAudio | Add this function to a subclass to get a notification just before an audio clip is being imported. |
OnPreprocessModel | Add this function to a subclass to get a notification just before a model (.fbx, .mb file etc.) is imported. |
OnPreprocessSpeedTree | Add this function to a subclass to get a notification just before a SpeedTree asset (.spm file) is imported. |
OnPreprocessTexture | Add this function to a subclass to get a notification just before the texture importer is run. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!