在做Unity的项目过程中,我们经常会创建一堆脚本,然后删除脚本或修改脚本名字。

单纯的删除脚本或者修改脚本,本身不会造成工程的编译失败、游戏运行不起来,但是如果有Prefab或场景物件有使用到这些脚本,就会导致在运行时报一个警告,还会看到Missing(Mono Script)这样的提示,如下

久而久之,看到多了也就烦了,今天我们就提供一段小脚本来检查这些缺失的脚本引用,代码如下:

public static void CheckReferences() {
    GameObject go = Selection.activeGameObject;
    var monoBehaviours = go.GetComponentsInChildren<MonoBehaviour>(true);
    foreach (MonoBehaviour monoBehaviour in monoBehaviours) {
        if (monoBehaviour == null) {
            Debug.LogError(go.name + "有缺失的脚本");
        }
    }
}

这段脚本,不仅可以检查Prefab中是否有缺失的脚本,也可以检查场景中的物件。

当然方括号中的MonoBehaviour也可以替换成其他的脚本组件,比如Behaviour,Component等,就看你要查找哪一类组件。

查找到丢失脚本的物件后,我们是否需要手动来删除呢?实际不用,有脚本来帮忙搞定,我们下篇来分享。