场景里面有一些丢失的脚本,会造成游戏报警告,还是需要清理干净的

为了方便美术,写个小工具,刚开始还是被坑到了,遍历了所有的物体,

将所有的组件加入到数组里,判断如果组件为空的话删除,但是删不掉 也是醉了

搜索了好久发现了原因,需要先序列化物体,然后得到它的序列化属性,将对应

的属性根据索引删除掉。之后重新应用属性即可。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;public class deleNullComponent : EditorWindow {[MenuItem("tool/deleComponent")]static void window(){deleNullComponent win = (deleNullComponent)EditorWindow.GetWindow(typeof(deleNullComponent), false, "tool", false);win.Show();}int dex = 0;void OnGUI(){GUIStyle style1 = new GUIStyle();style1.fontSize = 15;style1.normal.textColor = new Color(0.7f, 0.7f, 0.7f);EditorGUILayout.LabelField("▼删除场景中的空脚本", style1, GUILayout.Width(60));EditorGUILayout.LabelField("已经删除了" + " " + dex + " " + "个空脚本", style1, GUILayout.Width(100));dex = 0;//删除场景中的空脚本if (GUI.Button(new Rect(200, 10, 70, 25), "删除")){spaceScrip();}}void spaceScrip(){List<GameObject> sceneRoot = new List<GameObject>();List<GameObject> obj = new List<GameObject>();//得到场景的根节点UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects(sceneRoot);for (int i = 0; i < sceneRoot.Count; i++){Transform[] a = sceneRoot[i].GetComponentsInChildren<Transform>();for (int j = 0; j < a.Length; j++){   GameObject go = a[j].gameObject; //得到数组中的单个objectSerializedObject so = new SerializedObject(go); // 将object序列化var soProperties = so.FindProperty("m_Component");//得到object的Component序列化数组var components = go.GetComponents<Component>();//得到物体的component数组int propertyIndex = 0;foreach (var c in components)//遍历component数组{if (c == null){soProperties.DeleteArrayElementAtIndex(propertyIndex);dex++;}++propertyIndex;}so.ApplyModifiedProperties();//这句话好重要 开始没加上 怎么都不成功 坑死我了 }}//将场景设置为dertif (dex > 0)UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());}}

亲,如果您觉得本文不错,愿意给我一些动力的话,请用手机扫描二维码即可向我打赏

                                         打赏

unity编辑器拓展九——删除场景中丢失的脚本相关推荐

  1. Unity Editor自制工具(1)--“Editor目录栏按钮+全局搜索方法+自制Editor窗口”实现搜索与删除场景中任意名称游戏物体

    1,制作Editor上方目录按钮 在C#静态方法上方加上[MenuItem("目录")],可在Editor中上方目录栏生成一个按钮. using System.Collection ...

  2. Unity 编辑器插件-快速删除组件

    尊重原著:(1条消息) Unity 编辑器插件-快速删除组件_unity 删除组件_菜菜ANY的博客-CSDN博客 实现删除所选物体及子物体中指定组件.自动apply 同时考虑一个物体上挂在多个相同组 ...

  3. unity编辑器拓展整理(主要是siki的视频教程)

    编辑器拓展 https://blog.csdn.net/zxl321365712/article/details/80080586 蛮牛上一个详细的博客 http://www.manew.com/th ...

  4. Unity编辑器拓展(Handles/EditorTool)

    Handles Scene视图中的自定义 3D GUI 控件和绘制操作. UnityEditor.Handles - Unity 脚本 APIhttps://docs.unity.cn/cn/curr ...

  5. Unity编辑器拓展-写一个查看当前所有PlayerPrefsKey的窗口

    创建一个PlayerPrefsKey查看器 效果图 前言 开发 一.获取数据 目录结构 二.开发编辑器窗口 效果图 思路 一.绘制搜索栏 二.定义PlayerPrefs数据结构体 三.根据搜索框过滤数 ...

  6. Unity编辑器拓展之三:拓展Unity的Hierarchy面板

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 效果图: 上图中在Hierarchy右侧绘制了Toggle,Label,以及自定义的texture和Unity原声的T ...

  7. Unity编辑器拓展(Gizmos)

    Gizmos 辅助图标用于协助在 Scene 视图中进行视觉调试或设置. 所有辅助图标绘图都必须在此脚本的 OnDrawGizmos 或 OnDrawGizmosSelected 函数中进行. Uni ...

  8. Unity编辑器拓展之六:利用反射打开Unity Preferences Window

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 如何利用反射打开Unity Preferences Window Unity Preferences Window如下图所示 ...

  9. unity编辑器扩展_01(在工具栏中创建一个按钮)

    代码: [MenuItem("Tools/Test",false,1)]     static void Test()     {         Debug.Log(" ...

  10. Unity编辑器拓展之五:修改脚本icon

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 Unity修改脚本在Project面板中显示的icon有两种方法, 先看示意图: 方法1:修改脚本的meta文件 脚本 ...

最新文章

  1. 失败用例重跑机制-python装饰器
  2. android 字定义GridView 引用自己的定义布局
  3. 你们的数学老师是怎么读这些符号?
  4. 【LOJ#572】Misaka Network 与求和(莫比乌斯反演/杜教筛/min_25筛)
  5. 【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...
  6. input在iOS里的兼容性
  7. Linux进程之间通信 信号
  8. 2017.4.16 麦森数 思考记录
  9. gcc include lib路径扩展
  10. Python删除文件中含有特定值的行
  11. Hvv近期0day总结五
  12. 计算机组成原理上机试卷,计算机组成原理试卷及答案
  13. Linux安装ParaView
  14. 七周成为数据分析师 第一周:数据分析思维
  15. HBase之一月速成:整合phoenix
  16. IEEE 802各个协议
  17. [JAVA毕业设计]高速公路收费管理源码获取和系统演示
  18. 进阿里一年中最好的机会
  19. 电信增值短信平台模块清单
  20. 行业前沿|无人机视觉自主导航发展及视觉智能开发支撑平台介绍

热门文章

  1. matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
  2. 搭建sql注入平台及DVWA漏洞环境
  3. C#小游戏,拼音打字练习
  4. windows图片和传真查看器
  5. ie 打开html文件 慢,win7系统使用ie浏览器访问网页显示缓慢、卡死的解决方法
  6. 阿里云服务器怎么预防CC攻击?
  7. xLang 的类型转换
  8. Flink SQL regular join 如何设置状态过期
  9. USB-PPI数据电缆驱动
  10. python中文名字-Python 批量生成中文姓名(百家姓)