Compiler Directives

Overview of using compiler directives to optimize the package.

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.

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