x


How do I remove a ScriptableObject reference after the script has been deleted?

I've been working on a C# DLL for a custom editor that saves its data in objects whose classes are derived from ScriptableObject. The ScriptableObjects are stored within a List<> which is a member of a script component attached to a GameObject. Everything works fairly well: objects are serialized, etc.

The problem comes when the script of one of the objects in the List is deleted from the project. Any attempt to access the List at the index where the object was at results in a hard crash to desktop from Unity.

Now you may ask, "why would you delete the script from the project"? The editor plugin is designed to search through the developer's scripts to find certain types of classes. It does this by using .NET standard stuff like Assembly.CurrentDomain.GetAssemblies and searching to find Custom Attributes or specific Types. Essentially, it's designed to be as user-friendly as Unity itself is (delete a script, and it cleans itself up).

While the EditorWindow.OnProjectChange method seems like it would be the best place to detect this, this is only called when the EditorWindow is open, and it would need to know about all of the components. In addition, it would have to perform its magic after scripts are compiled, and by that time it's already too late.

So, basically, how do I remove a reference to a ScriptableObject-derived object in a List after the Type has been removed from the project?

more ▼

asked Oct 27 '10 at 08:40 AM

Jerrod Putman gravatar image

Jerrod Putman
372 3 3 6

(comments are locked)
10|3000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x591
x348
x66
x46

asked: Oct 27 '10 at 08:40 AM

Seen: 1009 times

Last Updated: Oct 27 '10 at 08:40 AM