14. Debug Mode+

  04. Features No Comments

What is Debug Mode+?

When Debug Mode+ is active, all components and class members are shown in inspector view. This includes:

  • All non-serialized fields.
  • All fields containing the HideInInspector attribute.
  • All properties.
  • All methods.
  • All hidden components (when Debug Mode+ has been enabled for the whole view using the view menu).
  • Previously unsupported types: dictionaries, multi-dimensional arrays, interfaces, delegates…

The only thing not revealed is members with the Obsolete attribute. This is to avoid exceptions being thrown when they are accessed.

Note: Debug Mode+ also works great when inspecting static class members.

Enabling Debug Mode+

This mode can be enabled for a single component using the Debug Mode+ buttonfound on the header toolbar. Debug Mode+ mode will remain active for the component only until the inspected target changes, then it is automatically disabled.

Alternatively you can enable Debug Mode+ for the entire inspector view by opening the view menu from the Power Inspector toolbar and selecting the item Debug Mode+ > On. Debug Mode+ will be active for everything inside the inspector view, and remains on even if the inspected targets.
When Debug Mode+ is enabled for the entire view, hidden components on inspected GameObjects will also shown in the inspector.

Why Debug Mode+?

When you run into unexpected behavior, it can invaluable to be able to select any target and see all the data it contains without limitations. Even if a field or a component has been hidden in the Inspector, in the context of debugging, you might want to bypass those restrictions temporarily. Unfortunately, this is often not possible in the default inspector.

When you’re testing components that are still works in progress, a common thing you want to do is call some methods on them to observe if everything is working as expected. In the default inspector there is no way to do this, without making changes to code. This process can waste a lot of time, because even minor code changes require the script’s assembly to be reloaded, which costs precious time especially with larger projects.

Additionally, should you forget to remove your temporary test code, such as test buttons you exposed to the inspector, it can lead to unnecessary confusion among users.

Debug Mode+ was introduced to solve all of these problems. Using it you can easily invoke any methods you like with parameters you specify through the inspector. And you can always check the contents of that dictionary field if you would like, even if it’s normally hidden.