Refactoring is a healthy process to cleanup your code once it is bug free, and you have a better understanding of its in and outs. In this process, you may want to apply new naming conventions to your variables, methods and members. Unfortunately the process is not always as smooth as you would expect.

The major flaw comes from the lack of a live logical connection between monodevelop and unity, that is... apart from your brain :). All interaction between both is actually based on files modification, which creates some odd quirks:

  • MonoBehaviour file renaming: If you rename a file & monobehaviour inside mono develop, this will be considered as a new class by unity. Unity has no way to actually map this new monobehaviour to the existing one, and therefore all your inspector links to this class will be broken. To avoid this, make sure that you rename files ONLY inside the Unity IDE, not in a file browser or inside monodevelop.
  • MonoBehaviour public member renaming: When you rename a public member inside a monobehaviour, unity will not know which variable to map to this new one and will therefore not be able to retrieve its serialized value. So this lost connection will cause all the values of this attribute to be lost in all scenes and prefabs... pretty nasty !