Unity 检测资源文件导入
用途:当向Unity导入 纹理资源、音效、fbx 等所有Unity支持格式的资源,想通过代码来修改或者验证资源命名是否合乎规范,如果已经在Unity中了则可以在 Assets 文件夹内鼠标右键 然后点击 Reimport,也会执行下面的逻辑
创建一个 Editor 文件夹,然后在Editor 文件夹中随便创建一个脚本,脚本命名随意
添加 using UnityEditor;
继承 AssetPostprocessor
代码如下
using UnityEngine;
using UnityEditor;
public class TextureAssetCheck : AssetPostprocessor
{
// 纹理导入之前调用
public void OnPreprocessTexture()
{
// 可以修改一些属性或者使用代码验证纹理的命名是否合乎规范
TextureImporter textureImporter = assetImporter as TextureImporter;
Debug.LogError("Pre Texture:" + textureImporter.assetPath);
}
// 纹理导入之后调用
public void OnPostprocessTexture(Texture2D texture)
{
TextureImporter textureImporter = assetImporter as TextureImporter;
Debug.LogError("Post Texutre:" + assetPath.ToLower());
Debug.LogError("Post Texture:" + texture.width + " " + texture.height);
}
// 所有资源导入都会调用这里
public void OnPreprocessAsset()
{
//目录信息也会被获取到
//Debug.LogError("Asset:" + assetImporter.assetPath);
}
/// <summary>
/// 在任意数量的资源导入完成后调用
/// 此函数必须声明为 static
/// </summary>
/// <param name="importedAssets"></param>
/// <param name="deletedAssets"></param>
/// <param name="movedAssets"></param>
/// <param name="movedFromAssetPaths"></param>
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
foreach(var asset in importedAssets)
{
Debug.LogError("import:" + asset);
}
foreach (var asset in deletedAssets)
{
Debug.LogError("delete:" + asset);
}
foreach (var asset in movedAssets)
{
Debug.LogError("move:" + asset);
}
foreach (var asset in movedFromAssetPaths)
{
Debug.LogError("moveFromAsset:" + asset);
}
}
}
根据自己的需求实现功能
比如检查导入资源的名字中是否包含 空格、特殊符号、不合乎项目自己规定的一些规范