Unity最新一键清理Prefab中所有MissingComponent
因为老的API Properties.DeleteArrayElementAtIndex(propertyIndex);提示没权限修改,
而unity提供了新的API GameObjectUtility.RemoveMonoBehavioursWithMissingScript(go); 更方便移除丢失的组件,需要遍历物体下面所有子节点,否则无法移除子节点的丢失组件。
于是重新整理了下清理的编辑器代码,直接贴上:
1 using System;
2 using UnityEngine;
3 using UnityEditor;
4
5 public class ResTool : Editor
6 {
7 [MenuItem("Tools/清理prefab中所有Missing的脚本")]
8 public static void ClearAllPrefabMissingComponents()
9 {
10 EditorUtility.DisplayProgressBar("Modify Prefab", "Please wait...", 0);
11 string[] assetGUIDs = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/Res/Prefab" });
12 try
13 {
14 for (int i = 0; i < assetGUIDs.Length; i++)
15 {
16 string path = AssetDatabase.GUIDToAssetPath(assetGUIDs[i]);
17 // Debug.Log($"path:{path}");
18 GameObject pre = PrefabUtility.LoadPrefabContents(path);
19
20 DeleteRecursive(pre, (go) =>
21 {
22 GameObjectUtility.RemoveMonoBehavioursWithMissingScript(go);
23 });
24 PrefabUtility.SaveAsPrefabAssetAndConnect(pre, path, InteractionMode.AutomatedAction);
25
26 EditorUtility.DisplayProgressBar($"清理Prefab丢失组件", $"当前{pre}, {i}/{assetGUIDs.Length}", i / (float)assetGUIDs.Length);
27 }
28 }
29 catch (Exception e)
30 {
31 Debug.LogError($"{e}");
32 }
33
34 AssetDatabase.SaveAssets();
35 EditorUtility.ClearProgressBar();
36 AssetDatabase.Refresh();
37 }
38
39 /// <summary>
40 /// 遍历所有子节点
41 /// </summary>
42 /// <param name="obj"></param>
43 /// <param name="action"></param>
44 static void DeleteRecursive(GameObject obj, Action<GameObject> action)
45 {
46 action(obj);
47
48 for (int i = 0; i < obj.transform.childCount; i++)
49 {
50 DeleteRecursive(obj.transform.GetChild(i).gameObject, action);
51 }
52
53 }
54
55 }
Unity最新一键清理Prefab中所有MissingComponent的更多相关文章
- 一键清理 Nexus 中无用的 Docker 镜像
		现许多团队使用 Nexus 来管理 Docker 镜像,产品不断迭代,镜像仓库占用的磁盘空间也越来越大.由于 Nexus 的控制台并未提供批量操作镜像功能,清理镜像十分不便.本文分享一个清理 Nexu ... 
- Unity Editor 检查工程Prefab(预设)中的空组件
		在我们做项目的过程中 经常会有预设中出现空的脚本 例如: 导致的原因是因为 脚本的丢失 现在我们来做一个检查工程中有空脚本的预设工具 老规矩直接上代码 放到工程就能用 using UnityEngin ... 
- Unity一键制作预制体Prefab一键修改Prefab属性
		1.适用于制作多个预制体(一个模型文件下面几百个子物体,都需要制作成预制体,这一个一个拖不是要炸裂) 模型资源如下图 2.模型先放到Resources文件夹下面方便读取,制作完预制体可以给他拖到其他文 ... 
- Unity脚本在层级面板中的执行顺序测试3
		断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ... 
- 一键清理Windows垃圾的BAT文件代码
		@echo off color 0atitle win7一键清理系统垃圾echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★ ... 
- 发布时一键添加html中的css标签和script标签版本号来防止浏览器缓存
		AppendFileVersion 是一个VSIX插件支持vs2015意以上版本 是我用来发布时一键添加html中的css标签和script标签版本号来防止浏览器缓存 分享给大家! download ... 
- Solidity 最新 0.5.8 中文文档发布
		本文首发于深入浅出区块链社区 热烈祝贺 Solidity 最新 0.5.8 中文文档发布, 这不单是一份 Solidity 速查手册,更是一份深入以太坊智能合约开发宝典. 翻译说明 Solidity ... 
- Android 一键清理动画
		版本号:1.0 日期:2014.7.29 2014.7.30 版权:© 2014 kince 转载注明出处 一键清理是非常多Launcher都会带有的功能,其效果也比較美观.实现方式或许有非常多 ... 
- Unity在Android和iOS中如何调用Native API
		本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调 ... 
- Unity脚本在层级面板中的执行顺序测试4-附加整理
		测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html ... 
随机推荐
- QT - Day 4
			1 界面布局 实现登录窗口 利用布局方式,给窗口类化 选取Widget进行布局,水平布局,垂直布局,栅格布局 给用户名.密码.登录.退出按钮进行布局 默认窗口和控件之间有9间隙,可以调整layout ... 
- python列表操作的大O效率
- 重点:递归函数,数学模块,随机模块---day14
			1.递归函数 自己调用自己的函数是递归函数 递:去 归:回 一去一回叫作递归 简单递归 def digui(n): print(n,'<==1==>') if n > 0: digu ... 
- Gin框架使用jwt-go配合中间件认证
			参考文档 // 文档 https://github.com/golang-jwt/jwt https://pkg.go.dev/github.com/golang-jwt/jwt@v3.2.2+inc ... 
- 单表查询,多表查询,子查询---day37
			1.单表查询 # ### part1 单表查询 # sql 查询语句的完整语法 '''select..from..where..group by..having..order by..limit..' ... 
- 第134篇:解决浏览器的CORS跨域问题(CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge.)
			好家伙, 我继续尝试着将我的飞机大战使用ES6模块化分离开来,出了点问题 1.出现问题: edge,chrome等一系列浏览器,会为了安全,禁止你跨域访问 目录如下: 主程序 index.htm ... 
- STM32标准库时钟树设置
			STM32的系统时钟大致可以分为以下流程 1.外部晶振提供HSE高速外部时钟信号 2.HSE经过PLL锁相环,倍频后得到PLL_CLK高速内部时钟信号 3.PLL_CLK经过分频后得到系统时钟SYSC ... 
- STL-bitset模拟实现
			#include<time.h> #include<string> #include<vector> #include<iostream> using ... 
- 彩虹猫IDA分析记录
			目录 彩虹猫分析 概述 无参启动 带/main参数启动 带/watchdog参数启动 MBR引导程序和动画程序 第一段 引导代码 第二段 动画代码 其他函数 扭曲桌面 扰乱鼠标 钩子函数 桌面绘制图标 ... 
- Android APP 渗透测试---总结
			1.apk反编译得到源代码 使用编译软件 dex2gar 和 jdgui.jar 对Android APP软件进行反编译.具体步骤如下: (1)首先将APK文件后缀改为zip并解压,得到其中的clas ... 
