- Home /
Find all instances of "Missing Script"
Is there a method to list all instances of a 'Missing Script' after moving/deleting a file,
My experiment with junction and a common library of scripts seems to have failed, and left me with quite a mess to clean up!
Even though it's a question from a long time ago, a while ago I made a plugin for this, "$$anonymous$$issing Script Hero": http://forum.unity3d.com/threads/released-missingscripthero-finding-missing-script-references-the-easy-way.273925/
This is pretty insane I'm sorry to say. Imagine you have a huge scene and half your nodes have "missing scripts"..I mean comeone ! You might as well throw your game out the window.
I have made a tool to find out all missing references.
Check it out here: https://www.assetstore.unity3d.com/#!/content/45693
Answer by lowbloodsugar · Mar 08, 2010 at 08:40 PM
See the solution to your problem here:
http://www.unifycommunity.com/wiki/index.php?title=FindMissingScripts
Updated Link : http://wiki.unity3d.com/index.php/FindMissingScripts
Is there a way to deter$$anonymous$$e the name of a missing script and replace it automatically (using an editor script)?
AFAI$$anonymous$$, that possibiliy got optimized away with 3.5. With <3.5, the referenced file would still be listed as a string in the binary asset (scene, material, prefab, ...) (which often helped us a lot if somebody deleted an asset at some point from the Asset Server, and you wanted to figure out which "$$anonymous$$issing Script" was originally referenced.
But since 3.5, they switched entirely to GUIDs, so assets are no longer referenced by path/name. There is AssetDatabase.GUIDToAssetPath(), but IIRC it returns null if the asset is no longer in the database. :-(
@Wolfram Would you $$anonymous$$d demonstrating how to achieve this using GUIDs? I am not sure if you'll get this follow up comment. I certainly didn't get an e-mail notification of your comment...
2021, wiki site can't be reached. Used the wayback machine to pull it up:
https://web.archive.org/web/20200724123545/http://wiki.unity3d.com/index.php/FindMissingScripts
Answer by liortal · Jan 05, 2015 at 02:57 PM
I wrote a post + code examples for how to find missing references and missing components:
http://www.tallior.com/fixing-missing-references/
It's very useful, we're using it whenever we hit these cases.
Answer by corb · Feb 26, 2010 at 11:11 PM
Not sure if I'm following. If you know the name of the script but don't know which objects use it, you can create a script with that name and the following contents:
function Start () { print("Script XYZ used by " + name); }
Not it was more to find objects that have orphaned "$$anonymous$$issing Script" entries.. IE: you have a bunch of objects that use script XYZ.cs, but then you delete that script file, but there are still entries on the objects that need to be 're-connected'
EX: Rena$$anonymous$$g a file outside of the unity project window can break things.
also cases where trying to Junction a set of standard scripts across multiple projects will cause the disconnection
Answer by mcroswell · Mar 05, 2010 at 11:44 PM
I just read in another post (search "Mass Set Materials") where the scriptor used:
Undo.RegisterSceneUndo("Mass Set Materials");
This apparently allows you to Undo effect of your script.
Now, regarding you're earlier problem, I too have had that problem, and don't have a solution. I do think using this Undo method might help your experiments though. It is placed in the Start(), I recall.
Hope you find your answer - it will help a lot of us, I'm sure.
Answer by DaveA · Jun 18, 2012 at 07:33 PM
This is an old problem. I would start with the Component Copier in the Asset Store (a real bargain!), and see how it uses Reflection. The idea would be to look at what fields are on a script to try to match them up with existing scripts and see what fits best. But I don't think you can get at those fields once the script has gone missing (even though they still show up in the Inspector UI. Those are in the library/cache and we don't have (official anyway) API's to get at that. But then, you might look into the meta files and see what might be useful there.http://unity3d.com/support/documentation/Manual/ExternalVersionControlSystemSupport.html
Nothing, just the GUID of that particular asset. But if a script got deleted, the .meta file gets deleted along with it, and there is no way to recover the original path from a merely referenced GUID.
Yeah just checked that myself, was gonna delete that suggestion from my post. I had started working on an 'asset vault' system that would catalog scripts for just such occasions as I was tired of running into this problem. Ins$$anonymous$$d I got into the habit of exporting my scenes as packages and archiving them.
That vault sounds like a good idea.
I seem to remember we got inconsistencies when transfering assets from project A to B via packages in 3.5, since the GUIDs of identical assets were different between projects...(might be their file locations were different, so they got different GUIDs, but so far I didn't investigate this further).
Your answer
Follow this Question
Related Questions
Is it possible to run a script in the editor so it doesnt have to run it again the runtime???? 2 Answers
Class Reference in Editor not working 1 Answer
Can't open scripts with monodevelop? 1 Answer
AssetPreview.GetMiniTypeThumbnail not working for custom scripts 0 Answers
problem with the digits of my timer 1 Answer