当前位置: 首页 > 工具软件 > Sprite2D > 使用案例 >

Unity3d导入图片自动修改TextureType为Sprite(2D and UI)及设置Packing Tag为文件夹名。

易自珍
2023-12-01

Unity3d导入图片自动修改TextureType为Sprite(2D and UI)及设置Packing Tag为文件夹名。



前言

Unity中每次导入新的图片都要去设置TextureType为Sprite(2D and UI)打包图集时候还要设置PackingTag为文件夹名,手动设置无疑是异常麻烦的,工作量也是巨大的,所以搞一个便利的小工具是很有必要事情。


一、资源导入函数AssetPostProcessor

该函数允许您挂接到导入管线并在导入资源前运行脚本。

1.using UnityEditor命名空间

在使用该函数时需要引用命名空间:using UnityEditor。

2.OnPostprocessTexture()

描述:纹理导入Unity,在纹理完成导入之前获取通知。

using UnityEditor;

public class Test : AssetPostprocessor
{
    void OnPreprocessTexture()
    {
        Debug.Log("资源导入通知");
    }

}

3.AssetPostProcessor.assetImporter

对资源导入器的引用。

二、纹理导入器TextureImporter。

描述:纹理导入器允许你从编辑器脚本修改Texture2D导入设置。

1.TextureImporter .textureType

描述:当前正在处理的纹理类型

代码如下(示例):

using System.IO;
using UnityEditor;

public class Test: AssetPostprocessor
{
    void OnPreprocessTexture()
    {
        TextureImporter textureImporter = (TextureImporter)assetImporter;
        textureImporter.textureType = TextureImporterType.Sprite;
    }

}

二、目录操作Path。

描述:对文件或者目录路径信息的字符串执行操作。

1.Path .GetDirectoryName()

描述:返回指定路径字符串的目录名称组件

2.Path .GetFileName(string)

描述:返回文件名称,包含指定路径字符串的扩展名。

代码如下(示例):

using System.IO;
using UnityEditor;

public class Test: AssetPostprocessor
{
    void OnPreprocessTexture()
    {
        TextureImporter textureImporter = (TextureImporter)assetImporter;
        // 设置纹理类型
        textureImporter.textureType = TextureImporterType.Sprite;
		
		// 返回文件所在路径
        string dirName = Path.GetDirectoryName(assetPath);
        // 获取文件夹名
        string folderStr = Path.GetFileName(dirName);
        // 设置打包标签
        textureImporter.spritePackingTag = folderStr;
    }

}

总结

成长就是这样,痛并快乐着。

 类似资料: