转载注明出处:http://www.manew.com/thread-99169-1-1.html
通过Unity提供的事件通知类UnityEditor.AssetPostprocessor,我们在Unity编辑器中能够监控纹理、音频、模型等其他资源的导入事件。
我们可以通过这些事件的监控可以很清楚的知道操作的事件,从而根据自己的需求定制一些特殊的编辑器功能。
示例代码如下:代码放入Editor文件夹下
public class AssetPostprocessorEvent : UnityEditor.AssetPostprocessor {
//模型导入之前调用
public void OnPreprocessModel() {
Debug.Log("OnPreprocessModel=" + this.assetPath);
}
//模型导入之前调用
public void OnPostprocessModel(GameObject go) {
Debug.Log("OnPostprocessModel=" + go.name);
}
//纹理导入之前调用,针对入到的纹理进行设置
public void OnPreprocessTexture() {
Debug.Log("OnPreProcessTexture=" + this.assetPath);
TextureImporter impor = this.assetImporter as TextureImporter;
impor.textureFormat = TextureImporterFormat.ARGB32;
impor.maxTextureSize = 512;
impor.textureType = TextureImporterType.Advanced;
impor.mipmapEnabled = false;
}
//文理导入之后
public void OnPostprocessTexture(Texture2D tex) {
Debug.Log("OnPostProcessTexture=" + this.assetPath);
}
//音频导入之前
public void OnPreprocessAudio() {
Debug.Log("OnPreprocessAudio");
AudioImporter audio = this.assetImporter as AudioImporter;
audio.format = AudioImporterFormat.Compressed;
}
//音频导入之后
public void OnPostprocessAudio(AudioClip clip) {
Debug.Log("OnPostprocessAudio=" + clip.name);
}
//所有的资源的导入,删除,移动,都会调用此方法,注意,这个方法是static的
public static void OnPostprocessAllAssets(string[] importedAsset, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) {
Debug.Log("OnPostprocessAllAssets");
foreach (string str in importedAsset) {
Debug.Log("importedAsset = " + str);
}
foreach (string str in deletedAssets) {
Debug.Log("deletedAssets = " + str);
}
foreach (string str in movedAssets) {
Debug.Log("movedAssets = " + str);
}
foreach (string str in movedFromAssetPaths) {
Debug.Log("movedFromAssetPaths = " + str);
}
}
}