3.x编辑器扩展怎么统一修改预制体资源

问题:
我把2.x的项目通过官方扩展plugin-import-2x导入到了我的3.x项目中,但是这番操作下来,会导致预制体出现以下问题:
1.预制体里的每个子节点自动添加上了UIOpacity组件;
2.预制体里的每个子节点的Layer为空;
3.预制体里的部分组件(如:Sprite、Label)的custonMaterial引用了internal/default_materials里的ui-sprite-material.mtl资源
4.预制体里出现脚本引用丢失(cc.MissingScript)

需求:
我想通过编辑器扩展方式实现:
1.右键某个文件夹,递归遍历找到所有预制体
2.给所有预制体删除UIOpacity组件(包括子节点)
3.设置所有预制体的Layer为UI_2D(包括子节点)
4.去掉所有预制体对sprite-material.mtl资源的引用(包括子节点)
5.去掉cc.MissingScript(把该组件删掉)
6.如果可以,把UITransform组件的位置放到Node组件下面(现在的UITranform放到了最后面,不符合平时的观看习惯)

写个脚本遍历.prefab文件修改不就行了

prefab文件的结构有点复杂,直接修改prefab文件有可能遗漏,prefab的组成结构官方没有很详细的介绍,不断摸索需要耗费大量时间。而且随着引擎版本的更新迭代,prefab里的字段信息也有可能会改变。我希望使用类似node.removeCompent()的方式修改保存

@executeInEditMode了解一下

使用@executeInEditMode怎么遍历所有预制体,删除组件后保存呢?