两个图集中有大量同名资源要替换
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
public class ReplaceArt : EditorWindow
{
private class SpritesData
{
public string oldFileID, newFileID;
}
private static UnityEngine.Texture2D targetOld, targetNew;
private static ReplaceArt Replaceart;
static string oldGuid, newGuid, limitedPath, limitedPath_show;
private static string[] oldSpriteArry;
private static Dictionary<string, SpritesData> spriteDic;
[MenuItem("Assets/ReplaceArt", false, 13)]
private static void Open()
{
oldGuid = string.Empty;
newGuid = string.Empty;
limitedPath_show = "Assets/";
limitedPath = Application.dataPath;
targetOld = null;
targetNew = null;
Replaceart = null;
Replaceart = GetWindow<ReplaceArt>();
Replaceart.Show();
if (Selection.activeObject && Selection.activeObject.GetType() == typeof(UnityEngine.Texture2D)) targetOld = Selection.activeObject as UnityEngine.Texture2D;
}
private static bool InitSpriteDic(string path)
{
Object[] objs = AssetDatabase.LoadAllAssetsAtPath(path);
if (objs.Length <= 1) return false;
List<string> temp = new List<string>();
for (int i = 0; i < objs.Length; i++)
{
if (objs[i].GetType() != typeof(UnityEngine.Sprite)) continue;
string spriteName = objs[i].name;
if (spriteDic == null) spriteDic = new Dictionary<string, SpritesData>();
temp.Add(spriteName)