シーン内でスクリプトが欠落しているゲームオブジェクトを列挙する

using UnityEngine;
using UnityEditor;

public class FindMissingScripts
{
    [MenuItem("Tools/Find Missing Scripts in Scene")]
    static void FindMissingScriptsInScene()
    {
        int count = 0;

        foreach (var go in Object.FindObjectsOfType(true))
        {
            foreach (var co in go.GetComponentsInChildren(true))
            {
                if (co == null)
                {
                    Debug.Log($"Found a GameObject with missing script: '{go.name}'", go);
                    count++;
                }
            }
        }

        if (count == 0)
        {
            Debug.Log("No GameObjects found with missing script.");
        }
    }
}

スクリプトが欠落したプレハブを列挙する

using System.Linq;
using UnityEngine;
using UnityEditor;

public class FindMissingScripts
{
    [MenuItem("Tools/Find Missing Scripts in Project")]
    static void FindMissingScriptsInProject()
    {
        int count = 0;

        string[] paths = AssetDatabase.GetAllAssetPaths().Where(
            paths => paths.EndsWith(
                ".prefab", System.StringComparison.OrdinalIgnoreCase
            )).ToArray();

        foreach (var path in paths)
        {
            var go = AssetDatabase.LoadAssetAtPath(path);

            foreach (var co in go.GetComponentsInChildren(true))
            {
                if (co == null)
                {
                    Debug.Log($"Found a GameObject with missing script: '{go.name}'", go);
                    count++;
                }
            }
        }

        if (count == 0)
        {
            Debug.Log("No GameObjects found with missing script.");
        }
    }
}

不明になった参照を列挙する

using UnityEngine;
using UnityEditor;

public class FindMissingScripts
{
    [MenuItem("Tools/Find Missing References in Scene")]
    static void FindMissingReferencesInScene()
    {
        int count = 0;

        foreach (var go in Object.FindObjectsOfType(true))
        {
            foreach (var co in go.GetComponentsInChildren(true))
            {
                SerializedObject so = new SerializedObject(co);

                var sp = so.GetIterator();

                while (sp.NextVisible(true))
                {
                    if (sp.propertyType == SerializedPropertyType.ObjectReference &&
                        sp.objectReferenceValue == null && sp.objectReferenceInstanceIDValue != 0)
                    {
                        Debug.Log(
                            $"Found a GameObject with a missing reference " +
                            "'{sp.name}' in '{go.name}'", go);
                        count++;
                    }
                }
            }
        }

        if (count == 0)
        {
            Debug.Log("No GameObjects found with any missing references.");
        }
    }
}

参考:

Missing チェックを行う Editor 拡張 – Qiita

2018.3 で Missing References が検出できなくなった時の対処方法 | コガネブログ

Missing があるアセットを検索する | WonderPlanet Developers’ Blog

Unity 2018.3 での Missing が検出できない – teratail

Finding Missing Object References | Game Developer

欠落したスクリプトの参照をまとめて削除する

ドキュメント:

GameObjectUtility.RemoveMonoBehavioursWithMissingScript | Unity スクリプトリファレンス [公式]

参考:

Missing Mono Script となったコンポーネントをプログラムで削除する方法 | kan のメモ帳

Missing になっているコンポーネントを取得/削除する | LIGHT11

Missing になっているコンポーネントを一括削除する方法 | LIGHT11

Missing なスクリプトを削除する | ゲームの作り方!

How do I remove null components ( i.e. “Missing(Mono Script)” ) via editor script? – Unity Answers

修復/置換する

こちらのページを参照

ツール/アセット

参考:

The referenced script on this Behaviour is missing – Unity Forum

アニメーションクリップ

参考:

Prefab missing script and animator errors – Unity Forum

ファイル名の変更

参考:

Scripts missing after refactoring name in many locations, how to fix? – Unity Forum

チュートリアル

Effortlessly Find Missing Script Components with this Tool (Warped Imagination)

Find GameObjects with Missing Scripts (Abhijeet Dani)

Missing Scripts Finder

リポジトリ:

plyoung/MissingScriptsFinder: Helps Find Objects with Missing Scripts – GitHub

参考:

Missing Scripts Finder – Missing なコンポーネントを検索できる | コガネブログ

Missing References Finder

リポジトリ:

edcasillas/unity-missing-references-finder: A Tool to Find Missing References – GitHub

liortal53/MissingReferencesUnity: An Editor Extension for Finding Missing Object References – GitHub

コード:

Finding Missing References (ProGM) – GitHub Gist

参考:

Finding Missing References | Random Bits

Find Missing Scripts

コード:

Find Missing Scripts in Prefabs (zaki) – GitHub Gist

UniMissingReferenceUtils

リポジトリ:

baba-s/UniMissingReferenceUtils: オブジェクトの参照が Missing Reference になっているかどうかを確認できるクラス – GitHub

参考:

UniMissingReferenceUtils – オブジェクトの参照が Missing Reference になっているかどうかを確認できるクラスを GitHub に公開しました | コガネブログ

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA