So check this... In unity GameObjects and Components, when destroyed, evaluate as == to null. This is useful because the managed mono wrapper for them actually still exists (you can call GetInstanceID on them for instance), but a whole bunch of it has been destroyed and it's waiting for garbage collection. Well I use interfaces rather frequently and if you reference a component by its interface, this evaluation no longer works. It'll still return as non-null. But if you attempt to use it for anything it throws errors (of course, because it's been destroyed). Code (csharp): IMyComponent comp = obj.GetComponent<Something>() As IMyComponent; GameObject.Destroy(obj); if(comp == null) ... //this doesn't work You can see this in action in this attachment: View attachment $DestroyedTest.zip Open Scene01, play it, and click the sphere on the right... you'll see how it doesn't evaluate as null. You'll see in the script 'Loop' that I have a work around. Now this work around is what I'm here to talk about. Currently I just have it so that all my interfaces that represent a component inherit from a generic interface 'IComponent'. And IComponent has a property for the component, and a property to test if 'isDestroyed'... which does the test directly on the component. Getting the default unity behaviour. I just don't like this... it means I can no longer say: if(mycomp == null) I instead have to say: if(mycomp == null || mycomp.isDestroyed) or I create a utility function that does the long testing for me... if(MyUtility.IsNullOrDestroyed(mycomp)) So yeah, wanted to both point this out to everyone AND get some people's opinion on the matter.