您的位置:首页 > 移动开发 > Unity3D

Unity3D编辑器:删掉MissingScirpt脚本

2017-09-21 09:24 302 查看
using UnityEngine;
using System.Collections;
using UnityEditor;
using UnityEngine.SceneManagement;

public class RemoveMissingScripts : Editor
{
[MenuItem("Tools/移除丢失的脚本")]
public static void RemoveMissingScript()
{
var gos = GameObject.FindObjectsOfType<GameObject>();
foreach (var item in gos)
{
Debug.Log(item.name);
SerializedObject so = new SerializedObject(item);
var soProperties = so.FindProperty("m_Component");
var components = item.GetComponents<Component>();
int propertyIndex = 0;
foreach (var c in components)
{
if (c == null)
{
soProperties.DeleteArrayElementAtIndex(propertyIndex);
}
++propertyIndex;
}
so.ApplyModifiedProperties();
}

AssetDatabase.Refresh();
Debug.Log("清理完成!");
//Debug.Log(gos.Length);
//var r= Resources.FindObjectsOfTypeAll<GameObject>();
//foreach (var item in r)
//{
//    Debug.Log(item.name);
//}
//Debug.Log(r.Length);

}

}


如果只是CetComponent然后判空然后Destroy是不起作用的,用上这种序列化的方式凑效

转载:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编辑器 脚本 空脚本