上一篇Unity编辑器扩展实践二、通过代码查找所有预制中已经查到到所有的预制体了。
然后我们就可以用这些预制体做一些其他的操作了,比如查找该预制的资源引用。可以直接遍历预制,找到预制里面的所有Image组件,然后比较Sprite属性的值,看是否和检测的资源相同。
Prefabs.Clear();if (m_sprite == null) return;EditorUtility.DisplayCancelableProgressBar("查找图集", "查找图集中...", 0);List<Image> aorImages;List<GameObject> _prefabList = GetAllPrefabByAssetDatabase("Assets/Resources/TSUprefabs");for (int i = 0; i < _prefabList.Count; i++){if (_prefabList[i] == null){continue;}aorImages = new List<Image>(_prefabList[i].GetComponentsInChildren<Image>());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组件即可。
查找图片的引用可以用这个方法,其他资源同理。