Forked from glebov21/SelectGameObjectsWithMissingScripts.cs
Created
June 18, 2019 08:31
-
-
Save isaveu/e2057f397f26df882b5b6e3d94556230 to your computer and use it in GitHub Desktop.
Find all missing scripts in unity3d scene
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using UnityEditor; | |
using System.Collections.Generic; | |
using UnityEngine.SceneManagement; //3 | |
public class SelectGameObjectsWithMissingScripts : Editor | |
{ | |
[MenuItem("Tools/WPAG Utilities/Select GameObjects With Missing Scripts")] | |
static void SelectGameObjects() | |
{ | |
//Get the current scene and all top-level GameObjects in the scene hierarchy | |
Scene currentScene = SceneManager.GetActiveScene(); | |
GameObject[] rootObjects = currentScene.GetRootGameObjects(); | |
List<Object> objectsWithDeadLinks = new List<Object>(); | |
foreach (GameObject g in rootObjects) | |
{ | |
//Get all components on the GameObject, then loop through them | |
Component[] components = g.GetComponents<Component>(); | |
for (int i = 0; i < components.Length; i++) | |
{ | |
Component currentComponent = components[i]; | |
//If the component is null, that means it's a missing script! | |
if (currentComponent == null) | |
{ | |
//Add the sinner to our naughty-list | |
objectsWithDeadLinks.Add(g); | |
Selection.activeGameObject = g; | |
Debug.Log(g + " has a missing script!"); | |
break; | |
} | |
} | |
} | |
if (objectsWithDeadLinks.Count > 0) | |
{ | |
//Set the selection in the editor | |
Selection.objects = objectsWithDeadLinks.ToArray(); | |
} | |
else | |
{ | |
Debug.Log("No GameObjects in '" + currentScene.name + "' have missing scripts! Yay!"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using UnityEngine.SceneManagement; //3
public class SelectGameObjectsWithMissingScripts : Editor
{
[MenuItem("Tools/WPAG Utilities/Select GameObjects With Missing Scripts")]
static void SelectGameObjects()
{
List allObjects = new List();
foreach (GameObject obj in UnityEngine.Object.FindObjectsOfType(true))
{
allObjects.Add(obj);
}
}
#endif