Unity一键转换DDS贴图为PNG格式

Unity一键转换DDS贴图为PNG格式问题背景 现在还有很多模型资源使用 DDS 格式的贴图 这种格式在 Unity 打 iOS 包的时候会提示错误 所以需要将 DDS 格式转换为其他格式 但是面对大量的材质需要替换时 不仅很累 而且很容易出错 一 转换格式 转换格式有很多软件可以做到 推荐一款很好用的图片格式转换软件 Xnconvert

大家好,我是讯享网,很高兴认识大家。

问题背景

现在还有很多模型资源使用DDS格式的贴图,这种格式在Unity打iOS包的时候会提示错误,所以需要将DDS格式转换为其他格式。但是面对大量的材质需要替换时,不仅很累,而且很容易出错。

一、转换格式

转换格式有很多软件可以做到,推荐一款很好用的图片格式转换软件 Xnconvert(点击下载)。
在Unity工程Asset目录下使用资源管理器搜索功能搜索“.dds”,按文件类型排序,效果如下;在这里插入图片描述
讯享网选中所有搜出来的.dds贴图文件,拖到XnConvert的输入文件区域:
在这里插入图片描述然后切换到输出界面,修改一下输出格式,使转换后的.png格式的图片和原来的dds文件处在同一目录下,方便我们在脚本中替换材质的贴图。

在这里插入图片描述

二、脚本修改材质主要贴图

新建任意名称脚本,将以下代码放在新建脚本中。在Unity的project视图点击选中资源根目录(Asset文件夹),然后在工具栏中点击Assets/一键替换DDS的贴图。

[MenuItem("Assets/一键替换DDS的贴图")] public static void ToChangeMaterialsDDS() { 
    //获取选中目录下的所有Material类型文件对象 UnityEngine.Object[] m_objects = Selection.GetFiltered(typeof(Material), SelectionMode.DeepAssets);//选择的所有对象 //遍历所有材质 foreach (UnityEngine.Object item in m_objects) { 
    if (Path.GetExtension(AssetDatabase.GetAssetPath(item)) != "")//判断路径是否为空 { 
    string path = AssetDatabase.GetAssetPath(item); string oldTextruePath = AssetDatabase.GetAssetPath(((Material)item).mainTexture); //判断材质的mainTexture是否为.dds格式 if (AssetDatabase.GetAssetPath(((Material)item).mainTexture).Contains(".dds")) { 
    //如果为.dds格式,获取其同名.png文件路径 string newTextruePath = AssetDatabase.GetAssetPath(((Material)item).mainTexture).Replace(".dds", ".png"); if (Path.GetExtension(newTextruePath) != "")//判断同目录下是否有同名.png文件 { 
    //则将材质的mainTexture改为转换好的同目录下的.png格式贴图,编辑器模式下使用AssetDatabase.LoadAssetAtPath读取资源 ((Material)item).mainTexture = AssetDatabase.LoadAssetAtPath<Texture>(newTextruePath); //替换成功后删除.dds格式的贴图文件 AssetDatabase.DeleteAsset(oldTextruePath); Debug.Log(AssetDatabase.GetAssetPath(item) + "TextureName=" + AssetDatabase.GetAssetPath(((Material)item).mainTexture)); } } } } //保存并刷新资源 AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } 

讯享网

稍等片刻,即可看到所有dds图片都已经不见了,可以进行iOS打包了!

小讯
上一篇 2025-01-14 20:05
下一篇 2025-02-07 15:56

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70246.html