title: Unregister event handler in MonoBehaviour
body: <p>I register an event handler (delegate) in the <code>Start</code> method within a class inherited from <code>MonoBehaviour</code>. I want to prevent memory leaks in this case.</p>
  <pre><code>public class CharactersController: MonoBehaviour
  {
      void Start()
      {
          npc.CollisionEntered += OnNpcCollisionEnter;
      }
  }
  </code></pre>
  <p>What is correct or the best method to unregister the delegate?
  There is a method <code>OnDestroy</code> <a href="http://OnDestroy" rel="nofollow noreferrer">http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDestroy.html</a></p>
  <p>The doc says that</p>
  <blockquote>
  <p>This function is called when the MonoBehaviour will be destroyed.</p>
  <p>OnDestroy will only be called on game objects that have previously
  been active.</p>
  </blockquote>
  <p>But it's not clear when MonoBehaviour will be destroyed and what if a gameobject hasn't been activated previously.</p>