A* Pathfinding Project  4.1.20
The A* Pathfinding Project for Unity 3D
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Events Macros Groups Pages
Compiler Directives

In the pro version of the A* Pathfinding Project there is a tab called "Optimization" in the A* Inspector.

This tab searches the project for places where compiler directives are listed. A compiler directive is a piece of code which controls if another piece of code should be included in the compilation or not.

#define DEBUG
public void Start () {
#if DEBUG
Debug.Log ("The DEBUG compiler directive is defined");
#else
Debug.Log ("The DEBUG directive is not defined");
#endif
}

As you can see, it works like ordinary IF statements. What's good about them is that they have absolutely no runtime overhead, they are all evaluated at compile time.
The A* Pathfinding Project has some aspects of it which can be customized. It would normally require hand editing of code, but compiler directives solves that.

Directives apply various optimizations (see their respective descriptions) or enable debugging messages (though they are probably not very useful for other people than developers).

If the directives are enabled or not is stored in the player settings in the field "Scripting Define Symbols" which means that the settings are shared between all your scenes in your Unity project.

If you are targeting mobile you might want to reduce file size of the built player as much as possible. If so you can use the ASTAR_NO_ZIP option to remove the dependency on the DotNetZip library. After enabling the option under the optimizations panel, you may remove the dll file in Assets/AstarPathfindingProject/Plugins/DotNetZip which should cut away a few hundred kb. However this will make the cache when using cached startup a lot larger.

There is a similar option for the JsonFx library, but the JsonFx is way smaller so usually it is not worth it to remove it.

ASTAR_OPTIMIZE_POOLING is good to have enabled in release builds. When it is not enabled, it does some extra error checking to make sure object pooling is done correctly, but that has some performance overhead (usually very small though).

A* Pro Feature:
This is an A* Pathfinding Project Pro feature only. This function/class/variable might not exist in the Free version of the A* Pathfinding Project or the functionality might be limited
The Pro version can be bought here