Many times in my project I avoided making standard C# classes (classes not inheriting from MonoBehaviour) because I have not found a way to easily get rid of them or to let the program know that this class should no longer be used and that it should point to null. Maybe it's because I misunderstand something... With a MonoBehaviour you can call Destroy() and it will make any references to this object point to null. With a standard C# class, you cannot call Destroy() meaning that as long as somewhere in the program there is a reference to the object, it won't get picked up by the garbage collector and it won't point to null. This means that should a script check to see if the object still lives with object != null, he will see that it lives. If I try and set the object = null, this will merely make the reference pointer point to null. Meaning that if there's another object that points to the object, the object will still live. In comparison to Unity's components where you can simply call Destroy(Component) and any scripts attempting to do something with the component will have a nullreference. I would like to know how to replicate this behaviour with standard C# classes. How can I destroy an instantiated standard C# class? Or am I thinking incorrectly about all of this?