シーン内でスクリプトが欠落しているゲームオブジェクトを列挙する
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.");
}
}
}
Code language: C# (cs)
スクリプトが欠落したプレハブを列挙する
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.");
}
}
}
Code language: C# (cs)
不明になった参照を列挙する
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.");
}
}
}
Code language: C# (cs)
参考:
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
検出/警告する
参考:
Missing チェックを行う Editor 拡張 – Qiita
修復/置換する
ツール/アセット
参考:
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
Uni Missing Reference Utils
リポジトリ:
baba-s/UniMissingReferenceUtils: オブジェクトの参照が Missing Reference になっているかどうかを確認できるクラス – GitHub
参考:
UniMissingReferenceUtils – オブジェクトの参照が Missing Reference になっているかどうかを確認できるクラスを GitHub に公開しました | コガネブログ
消去の秘伝書
入手:
消去の秘伝書 – 設定したオブジェクトのすべての子の Missing Script を消してくれるっぽいもの | nazotti の遊び場