I have class which extends AssetPostprocessor. I put my class code file inside my project’s Editor folder.
I have put logging statements on each of the overriden event handlers. Nothing seems to be logged. Do I need to make an instance of the MyPostProcessor class ?
using System;
using System.IO;
using UnityEngine;
using UnityEditor;
using System.Collections;
// This script require the MeshCombineUtility.cs
public class MyPostProcesser2 : AssetPostprocessor
{
// Apply this postprocessor early
public override int GetPostprocessOrder()
{
return 0;
}
private static void LogWrite(string s)
{
using (FileStream stream = new FileStream("PostProcesserLog.txt", FileMode.Append, FileAccess.Write, FileShare.None))
{
using (StreamWriter writer = new StreamWriter(stream))
{
Console.WriteLine(s+"\n");
writer.WriteLine(s+"\n");
}
}
}
public override void OnPostprocessModel(GameObject g)
{
LogWrite("OnPostprocessModel " + assetPath);
}
public override void OnPreprocessModel()
{
LogWrite("OnPreprocessModel " + assetPath);
}
public override void OnPostprocessTexture(GameObject g)
{
LogWrite("OnPostprocessTexture " + assetPath);
}
public override void OnPreprocessTexture()
{
LogWrite("OnPreprocessTexture " + assetPath);
}
public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
LogWrite("OnPostprocessAllAssets");
LogWrite("\timportedAssets\n");
foreach (string a in importedAssets)
{
LogWrite("\t\t" + a );
}
PerformBuild();
}
public static void PerformBuild()
{
string[] scenes = {"Assets/MyScene.unity"};
EditorApplication.NewScene();
AssetDatabase.ImportAsset(@"c:\temp\U3D\packages\mymodel.mb", ImportAssetOptions.Default);
EditorApplication.SaveScene("Assets/MyScene.unity");
AssetDatabase.SaveAssets();
}
}