unity3d  一键替换DDS的贴图 unity3d 一键替换DDS的贴图

unity3d 一键替换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();
    }

评论 0

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论