因为UI资源迭代需要根据资源引用进行查找批量替换新资源
直接上代码:
using System.Diagnostics;
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
using UnityEditor;
using Vector2 = UnityEngine.Vector2;
using Debug = UnityEngine.Debug;
using Object = UnityEngine.Object;
namespace MeEditorFramework{
public class MeEditorWindow : EditorWindow
{
[MenuItem("MeEditor/UITool")]
static void OpenGUILayoutExample(){
MeEditorWindow window = (MeEditorWindow)EditorWindow
.GetWindow(typeof(MeEditorWindow), false, "UI常用工具整合", true);
window.Show();
// GetWindow<MeEditorWindow>().Show();
}
enum PageId{
search
}
private PageId mCurPageId;
private void OnGUI(){
mCurPageId = (PageId)GUILayout.Toolbar((int)mCurPageId,Enum.GetNames(typeof(PageId)));
if(mCurPageId == PageId.search){
searchInit();
}
}
#region search
private static Object findObj;
private static Object newObj;
private List<Object> result = new List<Object>();
private Vector2 scrollPos = new Vector2();
private bool checkPrefab = true;
private bool checkScene = true;
private bool checkMaterial = true;
private string filter = "";
private string oldfilter = "";
private string[] guids;
private bool isfirst = true;
private List<string> prefabpathlist = new List<string>();
private static string searchStr = "";
private int len = 0;
/// <summary>
/// 查找图片预制件引用 根据文字搜索prefab
/// </summary>
private void searchInit() {
EditorGUILayout.BeginVertical();
// 资源排查情况
// 1 直接转移文件到子common 实现复制资源到新目录
// 3 整个prefab的替换 替换原来的prefab为新的通用prefab 注意:数据绑定要拷贝过来 文本绑定需要拷贝 情况比较复杂需要特别查看
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("UI常用控件整合");
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space();
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("查询图片",GUILayout.Width(60));
findObj = EditorGUILayout.ObjectField(findObj, typeof(Object), true);
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("查询字符",GUILayout.Width(60));
searchStr = EditorGUILayout.TextField(searchStr);
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
{
if (GUILayout.Button("查找引用",GUILayout.MinWidth(100),GUILayout.MinHeight(30))) {
result.Clear();
string assetGuid = "";
// 循环读取目录查找每个文件
Debug.Log("查找"+searchStr);
if (findObj == null) {
// 字符查询