Inspired by a video from the excellent Double Fine Documentary interviews with Massive Chalice artists and developers, I wanted to come up with a way of conditionally including debug statements in development code, but not in production. Luckily I wasn’t the first person to think of this.
Dan Puzey wrote an abstraction layer over Unity’s built-in
Debug library. The library contains several functions for various types of logging. The most important piece for me is
VerboseFormat, which combines string formatting with conditional attributes. I’ll explain a bit more about how these pieces work below.
To my surprise, Unity’s C# implementation, Mono, doesn’t use standard
printf-like string formatting syntax. Instead of
%s or other commonly used formatting variables, C# uses curly braces around numbers to interpolate variables passed in to the
String.Format call as arguments.
VerboseFormat function wraps
String.Format, so you can call
VerboseFormat with C# formatting strings.
1 2 3 4 5 6
Above some of the functions in Dan’s code you’ll see the following conditional attributes:
These two settings tell the C# compiler to only compile the code, in this case the
Verbose logging functions, when compiling during development, i.e.
UNITY_EDITOR. That means all of the
Verbose logging statements in your code will not be compiled in the production builds of your code.
Cool, huh? Good thinking, Dan.
It’s always great when you think that a tool would be useful and someone else has already implemented it for you. Go on over and give Dan’s blog a gander.