转载注明出处:http://www.manew.com/thread-99169-1-1.html
通过Unity提供的事件通知类UnityEditor.AssetPostprocessor,我们在Unity编辑器中能够监控纹理、音频、模型等其他资源的导入事件。
我们可以通过这些事件的监控可以很清楚的知道操作的事件,从而根据自己的需求定制一些特殊的编辑器功能。
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);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。