Unity编辑器扩展实践三、查找所有引用该图片的预制体

上一篇Unity编辑器扩展实践二、通过代码查找所有预制中已经查到到所有的预制体了。

然后我们就可以用这些预制体做一些其他的操作了,比如查找该预制的资源引用。可以直接遍历预制,找到预制里面的所有Image组件,然后比较Sprite属性的值,看是否和检测的资源相同。

Prefabs.Clear();
        if (m_sprite == null) return;

        EditorUtility.DisplayCancelableProgressBar("查找图集", "查找图集中...", 0);
        List aorImages;

        List _prefabList = GetAllPrefabByAssetDatabase("Assets/Resources/TSUprefabs");
        for (int i = 0; i < _prefabList.Count; i++)
        {
            if (_prefabList[i] == null)
            {
                continue;
            }
            aorImages = new List(_prefabList[i].GetComponentsInChildren());
            if (aorImages == null|| aorImages.Count<=0)
            {
                continue;
            }
            foreach (var image in aorImages)
            {
                if (image.sprite==null)
                {
                    continue;
                }
                if (image.sprite.Equals(m_sprite))
                {
                    Prefabs.Add(_prefabList[i]);
                    break;
                }
            }
            bool _cancel = EditorUtility.DisplayCancelableProgressBar("查找图集", "查找图集中("+i+"/"+ (float)_prefabList.Count+"...", i / (float)_prefabList.Count);
            if (_cancel)
            {
                break;
            }
        }
        EditorUtility.ClearProgressBar();

同理可以用这个方法给想要的预制体替换图片,只需要找到对应的预制组件,将图片复制给Image组件即可。

查找图片的引用可以用这个方法,其他资源同理。

你可能感兴趣的:(Unity编辑器扩展实践三、查找所有引用该图片的预制体)