using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class DeleteMissingScripts : EditorWindow { [MenuItem("Tools/移除丢失的脚本")] public static void RemoveMissingScript() { GameObject[] pAllObjects = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject)); int r; int j; for (int i = 0; i < pAllObjects.Length; i++) { if (pAllObjects[i].hideFlags == HideFlags.None)//HideFlags.None 获取Hierarchy面板所有Object { var components = pAllObjects[i].GetComponents(); var serializedObject = new SerializedObject(pAllObjects[i]); // 将object序列化 var prop = serializedObject.FindProperty("m_Component"); //得到object的Component序列化数组 r = 0; for (j = 0; j < components.Length; j++) { if (components[j] == null) { prop.DeleteArrayElementAtIndex(j - r); r++; } } serializedObject.ApplyModifiedProperties(); } } } [MenuItem("Tools/添加缺失克隆类型")] public static void AddCloneTypes() { Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); for (int i = 0; i < obj.Length; i++) { if (obj[i].GetComponent()) { var types = obj[i].GetComponent().CloneableTypes; if (types.Contains(CloneObjType.Ambulance)) { Debug.Log(obj[i].name); if (!types.Contains(CloneObjType.LiveBuildCar)) { types.Add(CloneObjType.LiveBuildCar); } if (!types.Contains(CloneObjType.EmergencyVehicle)) { types.Add(CloneObjType.EmergencyVehicle); } if (!types.Contains(CloneObjType.Cruiser)) { types.Add(CloneObjType.Cruiser); } } } } } }